目标

  • 掌握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循环的更多相关文章

  1. 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 ...

  2. 第三章 C#循环与方法

    第一节1-For循环入门 语法: for(条件表达式) { 执行语句 } 练习: 第三章作业1.写一个程序打印100到200的值;2.写一个程序从10打印到1:3.写一个程序打印10到30之间的所有偶 ...

  3. c++primerplus(第六版)编程题——第5章(循环和关系表达式)

    声明:作者为了调试方便,每一章的程序写在一个工程文件中,每一道编程练习题新建一个独立文件,在主函数中调用,我建议同我一样的初学者可以采用这种方式,调试起来会比较方便. (具体方式参见第3章模板) 1. ...

  4. Python基础教程之第5章 条件, 循环和其它语句

    Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32 #Chapter 5 条件, 循环 ...

  5. 《Python学习手册 第五版》 -第13章 while循环和for循环

    上一章已经讲过if条件语句,这章重点是循环语句:while.for 本章的重点内容 1.while循环 1)一般形式 2)break.continue.pass和循环的else 2.for循环 1)一 ...

  6. CodeMonkey少儿编程第3章 times循环

    目标 了解程序由哪三种基本的结构组成 了解循环的概念 掌握times的结构与用法 三种基本结构 计算机程序由三种最基本的结构组成,它们分别是: 顺序结构 循环结构 选择结构 千万不要被这些陌生的术语给 ...

  7. C语言 第六章 多重循环练习

    一.循环输入 #include "stdio.h" void main() { char c; do { printf("我告诉你1+1=2\n"); prin ...

  8. C语言 第六章 多重循环

    一.概要 在c语言中,if,switch,for,while,do-while可以相互间多次嵌套. if(){ for() { for() { } } } while() { for(){ } for ...

  9. python基础教程第5章——条件循环和其他语句

    1.语句块是在条件为真(条件语句)时执行或者执行多次(循环语句)的一组语句.在代码前放置空格来缩进语句即可穿件语句块.块中的每行都应该缩进同样的量.在Phyton中冒号(:)用来标识语句块的开始,块中 ...

随机推荐

  1. 模块化之CommonJS

    一.CommonJS特点 ​ 经过前面讨论,已经知道无模块化时项目中存在的问题.CommonJS的特点就是解决这些问题即: ​ 1.每个文件都是一个单独的模块,有自己的作用域,声明的变量不是全局变量( ...

  2. 2019牛客暑期多校训练营(第十场)E-Hilbert Sort(分形)

    >传送门< 题意 现给出你 $n $个坐标和 $k$,让你根据$ k$阶 希尔伯特曲线的走向排列给出的 $n $个坐标 希尔伯特曲线如下:  $k=1$ $k=2$ $k=3$可以将边长为 ...

  3. Codeforces Round #628 (Div. 2) C. Ehab and Path-etic MEXs(树,思维题)

    题意: 给有 n 个点的树的 n-1 条边从 0 到 n-2 编号,使得任意两点路径中未出现的最小数最小的方案. 思路: 先给所有度为 1 的点所在边编号,之后其他点可以随意编排. #include ...

  4. POJ - 1654 利用叉积求三角形面积 去 间接求多边形面积

    题意:在一个平面直角坐标系,一个点总是从原点出发,但是每次移动只能移动8个方向的中的一个并且每次移动距离只有1和√2这两种情况,最后一定会回到原点(以字母5结束),请你计算这个点所画出图形的面积 题解 ...

  5. Codeforces Round #295 (Div. 2) B. Two Buttons (DP)

    题意:有两个正整数\(n\)和\(m\),每次操作可以使\(n*=2\)或者\(n-=1\),问最少操作多少次使得\(n=m\). 题解:首先,若\(n\ge m\),直接输出\(n-m\),若\(2 ...

  6. 牛客编程巅峰赛S1第5场 - 青铜&白银 B.完全平方数的尾巴 (暴力)

    题意:有一个数\(x\),判断其是否能有某个完全平方数$mod$1000得到. 题解:直接写个for判断一下就好了,因为对1000取模,所以枚举到1000即可. 代码: class Solution ...

  7. 牛客编程巅峰赛S1第3场 - 青铜&白银 C.牛牛晾衣服(二分)

    题意:有\(n\)件衣服,每件衣服都有\(a_{i}\)滴水,所有衣服每分钟都能自然烘干\(1\)滴水,或者用烘干机,每分钟可以烘干\(k\)滴水,问最快多少分钟可以使所有衣服都烘干. 题解:这题和之 ...

  8. 浅谈Webpack模块打包工具二

    Webpack插件机制介绍 Loader专注实现资源模块加载,plugin解决其他自动化工作,比如清除dist目录,拷贝静态文件值输出目录,压缩输出代码等,下面列举几个plugin 的例子. Webp ...

  9. spring再学习之设计模式

    今天我们来聊一聊,spring中常用到的设计模式,在spring中常用的设计模式达到九种. 第一种:简单工厂 三种工厂模式:https://blog.csdn.net/xiaoddt/article/ ...

  10. 智能社讲解js基础

    一,Javascript的组成ECMAScript:翻译,核心,解释器,DOM:文档对象模型,Document Object Model 操作HTML的能力,document对象BOM:浏览器对象模型 ...