(
课件网) 4 循环语句 阅读思考 宰相达依尔向印度舍罕王进献了非常好玩的国际象棋游戏,国王玩得高兴,说我要重重地奖赏你。 这位宰相说,我希望大王给我的奖赏是:在这个棋盘的第1格放1个麦粒,第2格放两个麦粒,第3格放4个麦粒,第4格放8个麦粒。依次放下去,每次都乘以2。放满整个棋盘的64个格子就可以了。 想一想:国王能满足宰相的愿望吗? 棋盘与麦粒 学习目标 认识循环结构,掌握for循环和while循环的用法。 理解循环变量在循环中的作用,能够熟练应用 range()函数。 循环 所谓的“循环”,是指它会依据运算条件反复进行。 在循环过程中,只要条件符合就会继续运行,不断循环,直到运算条件不符合才会结束循环。 这种循环结构一般包含下面两种形式——— for/in循环:有限循环,有次数限制。 while循环:指定条件表达式,为断地重复运行,直到条件不符合为止。 for/in循环 1 for/in循环的特性 for/in循环是可计次数循环,所以要有计数器记录循环运行的次数。 for 循环变量 in 遍历结构: 语句块 else: 语句块 遍历结构可结合内置函数range()来使用 else语句是一个可选语句;它会在循环结束后执行 for/in循环的特性 for循环会遍历一个序列,如一个列表或一个字符串。完成序列的遍历后,循环结束。 range()函数 range( )函数表示产生一个序列,默认从0开始,每运行一次只会累加1。 range([start,]stop[,step]) start:起始值,预设为0,可省略。 stop:停止值,但不包括该值,不可省略。 step:计数器步长,默认值为1 range()函数 示例 输出 for k in range(4): print(k) 0 1 2 3 for k in range(1, 5): print(k) 1 2 3 4 for k in range(3, 13, 3): print(k) 3 6 9 12 for k in range(20, 11, - 2 ): print(k) 20 18 16 14 12 注意:默认从0开始,停止的值为stop-1 思考 1 用“*”代替故事中的麦粒,每1行代表1格: 如果每1行1粒麦粒,设计程序,打印出64行麦粒。 思考 2 用“*”代替故事中的麦粒,每1行代表1格: 如果第1格放1个,第2格放2个,第3格放3个……第64格放64个。 按照这一规则打印出64格的麦粒。 * ** *** **** ***** ****** …… 思考 3 如果第1格放1个,第2格放2个,第3格放4个,第4格放8个……以后每一格都是前一格的2倍。 计算出64格棋盘的麦粒总数。 * ** **** **** **** **** **** **** **** ? 一点通 循环变量 i 单格麦粒数 n 总数 s 0 1 1 1 n = 2 ** 1 = 2 3 2 n = 2 ** 2 = 4 7 3 n = 2 ** 3 4 …… n = 2 ** i 做一做 利用for/in循环,结合range()函数,列出小于10的整数。 一点通 一点通 while循环 2 while循环的特性 在条件表达式成立时,while循环会不断运行,直到条件表达式不成立,才会跳出循环并执行else之后的语句。 while循环一般用于循环次数未知的情况。 while 条件表达式: 符合条件_语句 else: 不符合条件_语句 条件表达式可以包含比较运算符或逻辑运算符 else语句是一个可选语句;当运算条件不成立时,其后的语句会被执行 while语句 x, y = 1, 10 while x < y: print(x) x += 1 设置两个变量x、y并赋予初始值;当x的值小于y时,就会不断循环运算,变量的值会不断累加,直到x的值不再小于y,停止循环 if/else语句双向选择 想一想 珠穆朗玛峰海拔约为8844米,是世界第一高峰。 如果有一张足够大的纸(厚1毫米),对折多少次,纸张的厚度可以超过珠穆朗玛峰的高度? 每张纸的高度为1/1000米,对折后得到1/1000*2,再对折得到1/1000*2*2,可知对折n次的高度为1/1000*2^n。若在循环中加入判断条件当对折n次的高度大于8844米时即终止循环,此时的n值正是要求解的问题。 第1次:1/1000 < 8844 (继续循环) ... ...