第6章 for循环
目标
- 掌握for循环的使用方法
- 理解for循环的嵌套
在第3章中,我们学习了times循环。times循环可以让一段代码重复执行指定的次数。
本章我们将学习另一种循环结构——for循环。它同样能让一段代码重复执行,但无需指定重复的次数。
那这段代码会重复执行多少次呢?还记得上一章中学习的数组吗,for循环中的数组里有多少个对象,代码就会重复执行多少次。
下面让我们开始本章的学习。
for循环
首先来看for循环的格式:
for element in array
....待重复执行的代码
是不是没有看明白?哈哈,没关系,我来解释一下你就清楚了。
以上for循环结构的意思是:对于数组(array)里的每一个元素(element),都执行一次“待重复执行的代码”。也就是说,数组里有多少个元素,就重复执行多少次下面的代码。
看了上述文字你也许还是感觉很蒙,那就让我们通过下面这个关卡来切实体验一下for循环的用法吧。
这是我为times循环那一章节所设计的一个关卡,它同样可以使用for循环来解决。
此关卡中有4只香蕉,它们共同组成了一个bananas数组。这4只香蕉都是这个数组里的元素,分别使用bananas[0],bananas[1],bananas[2]和bananas[3]来指代它们。
如果使用for循环,那么这一关的解法如下:
for b in bananas
....turnTo b
....step distanceTo b
注意,以上代码中的.仅用来表示空格,测试运行时请不要输入。
根据上述所介绍的for循环结构用法,因为bananas数组里有4个元素,所以循环会被执行4次。每一次循环时,都会依次从数组中取一个元素,将它赋值给b。
为了更深入的理解,我们在这里将上述for循环展开,可以得到如下的代码:
b = bananas[0]
turnTo b
step distanceTo b
b = bananas[1]
turnTo b
step distanceTo b
b = bananas[2]
turnTo b
step distanceTo b
b = bananas[3]
turnTo b
step distanceTo b
怎么样,看了以上展开的代码之后,for循环是不是更容易理解了?
为了测试你是不是真的理解了for循环的用法,我们来做如下一个测试。
请在浏览器里输入 http://t.im/hnwf , 可是直接点击下方的图片,以打开这一测试关卡。
很明显,面对如此多的香蕉,肯定是不能一只只地去收集了,那样太机械了,操作起来也不现实。所以,for循环这个时候就派上大用场了。
希望你能顺利通关!
for的嵌套
还有一点需要注意,for循环是可以嵌套的。
什么是嵌套呢?你有没有见过俄罗斯套娃,或者是象牙球雕?
对,for循环的嵌套就是指,在一个for循环的里面,仍然是for循环。下面请看一下for循环的两层嵌套:
for a in arrayA
....for b in arrayB
........待重复执行的代码段一
....待重复执行的代码段二
以上即是一个两层的for循环,可以看到,在最外层的for循环里面,包含了另一个for循环。
若将以上代码展开,可以得到以下代码:
a = arrayA[0]
b = arrayB[0]
代码段一
b = arrayB[1]
代码段一
b = arrayB[2]
代码段一
.... # 直到内层的for循环结束
代码段二
a = arrayA[1]
b = arrayB[0]
代码段一
b = arrayB[1]
代码段一
b = arrayB[2]
代码段一
.... # 直到内层的for循环结束
代码段二
.... # 直到外层的for循环结束
测试一下你是不是真正地理解了for的嵌套,请问,假设arrayA数组中有3个元素,arrayB数组中有5个元素,那么,在这个两层嵌套中,代码段一一共被执行了多少次?代码段二呢?
公布答案啦,代码段一一共被执行了3x5=15次,代码段二一共被执行了3次。
怎么样,你答对了吗?如果你的答案不正确,请再仔细思考一会儿。
75关即需要使用到for的嵌套结构,你也可以使用它来自测。
好了,for循环的内容就这么多了,课后作业赶紧做起来吧!
作业
- 故事模式61 - 75关
- 进阶模式6-1 - 6-15关
注意,一定保证要所有关卡都拿到三颗星。
小结
- for循环跟times循环一样,也可以用来重复执行某一段代码。
- for循环无需手动指定循环次数,具体循环次数由其中的数组元素个数决定。
- for循环是可以被嵌套的,即for循环的内部,仍然可以是for循环。其实,times循环也是可以被嵌套的。
第6章 for循环的更多相关文章
- C Primer Plus_第6章_循环_编程练习
1.题略 #include int main(void) { int i; char ch[26]; for (i = 97; i <= (97+25); i++) { ch[i-97] = i ...
- 第三章 C#循环与方法
第一节1-For循环入门 语法: for(条件表达式) { 执行语句 } 练习: 第三章作业1.写一个程序打印100到200的值;2.写一个程序从10打印到1:3.写一个程序打印10到30之间的所有偶 ...
- c++primerplus(第六版)编程题——第5章(循环和关系表达式)
声明:作者为了调试方便,每一章的程序写在一个工程文件中,每一道编程练习题新建一个独立文件,在主函数中调用,我建议同我一样的初学者可以采用这种方式,调试起来会比较方便. (具体方式参见第3章模板) 1. ...
- Python基础教程之第5章 条件, 循环和其它语句
Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32 #Chapter 5 条件, 循环 ...
- 《Python学习手册 第五版》 -第13章 while循环和for循环
上一章已经讲过if条件语句,这章重点是循环语句:while.for 本章的重点内容 1.while循环 1)一般形式 2)break.continue.pass和循环的else 2.for循环 1)一 ...
- CodeMonkey少儿编程第3章 times循环
目标 了解程序由哪三种基本的结构组成 了解循环的概念 掌握times的结构与用法 三种基本结构 计算机程序由三种最基本的结构组成,它们分别是: 顺序结构 循环结构 选择结构 千万不要被这些陌生的术语给 ...
- C语言 第六章 多重循环练习
一.循环输入 #include "stdio.h" void main() { char c; do { printf("我告诉你1+1=2\n"); prin ...
- C语言 第六章 多重循环
一.概要 在c语言中,if,switch,for,while,do-while可以相互间多次嵌套. if(){ for() { for() { } } } while() { for(){ } for ...
- python基础教程第5章——条件循环和其他语句
1.语句块是在条件为真(条件语句)时执行或者执行多次(循环语句)的一组语句.在代码前放置空格来缩进语句即可穿件语句块.块中的每行都应该缩进同样的量.在Phyton中冒号(:)用来标识语句块的开始,块中 ...
随机推荐
- 浅谈Webpack模块打包工具一
为什么要使用模块打包工具 1.模块化开发ES Modules存在兼容性问题 打包之后成产阶段编译为ES5 解决兼容性问题 2.模块文件过多 网络请求频繁 开发阶段把散的模块打包成一个模块 解决网络请 ...
- c++格式化输入输出以及操纵器的使用
C++格式化输入和输出 1,ios类中定义的格式控制标志 ios类中定义了一个数据成员:格式控制标志字,long x_flags x_flags每一位的状态值用枚举符号常量定义:如下列出常用几个 en ...
- 【uva 10570】Meeting with Aliens(算法效率--暴力+贪心)
题意:输入1~N的一个排列,每次可以交换2个整数,问使排列变成1~N的一个环状排列所需的虽少交换次数.(3≤N≤500) 解法:(又是一道我没打代码,光想和看就花了很久时间的题~QwQ)由于n很小,可 ...
- Codeforces Round #652 (Div. 2) C. RationalLee 贪心
题意: t组输入,你有n个数,还有k个朋友,每一个朋友需要wi个数.意思就是你要给第i个朋友分配wi个数,输入保证w1+w2+...+wk=n 一个朋友的兴奋值是你分配给他的数中最大值加上最小值的和( ...
- AtCoder Beginner Contest 179 D - Leaping Tak (DP)
题意:给你一个数字\(n\)和\(k\)个区间,\(S\)表示所有区间的并的集合,你目前在\(1\),每次可以从集合中选择一个数字向右移动,问有多少种方法从\(1\)走到\(n\). 题解:我们从1开 ...
- Windows环境下Robot Framework 下载及安装流程
1.安装包下载 注意安装包统一64位或32位 1)python-2.7.16.amd64.msi 2)robotframework-3.0.2.tar.gz 3)robotframework-ride ...
- C# 之 dynamic
C#中的dynamic用于避免编译时类型检查,编译器在运行时获取类型. dynamic无法使用VisualStudio的intelliSense(智能感知),即调用dynamic修饰的对象的方法或字段 ...
- C# 通过Internet搜索网络资源
Internet 网络资源非常丰富,几乎涉及到日常生活和研究的各个方面.流行的搜索引擎像Google.百度.雅虎等都能完成快速搜索网络资源的功能.本节我们将学习用C#实现这些功能的基本思路. 在Sys ...
- 国产网络测试仪MiniSMB - 如何3秒内创建出16,000条IP递增流
国产网络测试仪MiniSMB(www.minismb.com)是复刻smartbits的IP网络性能测试工具,是一款专门用于测试智能路由器,网络交换机的性能和稳定性的软硬件相结合的工具.可以通过此以太 ...
- 部署开源IP管理工具phpIPAM
一.安装环境程序: yum install httpd mariadb-server php php-cli php-gd php-common php-ldap php-pdo php-pear p ...