内容正文:
A
B
顺序结构
条件?
A
B
否
是
分支(选择)结构
A
条件?
是
否
循环结构
程序控制的三种基本结构
——计数循环
周而复始的循环
2
数学小挑战
请计算: 1*2*3*4*5
请计算: 1*2*3*4*5*6*7*8
请计算: 0*1*2*3*4*5*6*7*8*9*10
请计算: 1*2*3*4*5*6*7*8*9*10*……*1000
for 循环变量 in 列表 :
语句或者语句组
for循环语句的基本格式:
注意:
1.缩进:语句或者语句组要有两格缩进
2.冒号:for 循环变量 in 列表 :
列表
是一个包含多个数据元素有序的集合
#创建列表
例:fruit=["石留",1,"香蕉","橙子","梨"]
#添加元素(尾部添加)
例:fruit . append=["柚子"]
#删除元素
例:fruit . del[1] fruit . remove["梨"] ]
#修改元素
例:fruit[0]=["石榴"]
#反转列表
例:fruit . reverse()
代码:
num=[1,2,3,4,5]
count=1
for i in num:
count=count*i
print(count)
结果:
120
请计算: 1*2*3*4*5
代码:
count=1
for i in [1,2,3,4,5]:
count=count*i
print(count)
结果:
120
优点:便于重复使用
请用列表相关操作将
["列表", "for", "in", "循环变量"]
排列成正确顺序
方法一:
#移除"列表"和"in"
["for", "循环变量"]
#依次添加"in"和"列表“
["列表", "for", "in", "循环变量"]
方法二:
#直接将四个元素全部修改
["列表", "for", "in", "循环变量"]
打开TEST1,完成代码填空
计算:1*2*3*4*5*6*7*8*9*10
计算:
1*2*3*4*5*6*7*……*1000 ?
难度飙升
在列表中输入1000个数?
range()函数
range( start , stop , step)
基本结构:
步长
起始值
终止值
参数说明:
start: 计数从起始值开始。缺省默认是从 0 开始。例如range(5)等价于range(0,5);
stop: 计数到终止值结束,但不包括终止值。例如:range(1,5)运行结果是1~4,没有5。
step:步长,默认为1。例如:range(1,5)等价于 range(1, 5, 1),步长可以为负值。
第一步:打印1~1000
打开TEST2,完成代码填空
打印出1~1000
for i in range(1,1001):
print(i)
答案:
易错点:
1.若写为range(1001),默认由0开始,我们并不需要0,故应为range(1,1001)
2.若写为range(1,1000),取不到终止值,即输出序列中没有1000,故应为range(1,1001)
结果:
输出1~1000
第二步:完成1~1000的累乘运算
count=1
for i in range(1,1001):
count=count*i
print(count)
答案:
打开TEST3,完成代码填空
完成1~1000的累乘运算
(可参考之前的1~5累乘练习)
恭喜你已经初步掌握了计数循环!!!
棋盘与麦粒
棋盘与麦粒
舍罕王要奖赏国际象棋的发明人达依尔。国王问他想要什么,他对国王说:“陛下,请您在这张棋盘的第1个小格里,赏给我1粒麦子,在第2个小格里给2粒,第3小格给4粒,以后每一小格都比前一小格加一倍。请您把这样摆满棋盘上所有的64格的麦粒,都赏给您的仆人吧!”国王觉得这要求太容易满足了,就命令给他这些麦粒。当人们把一袋一袋的麦子搬来开始计数时,国王才发现:就是把全印度甚至全世界的麦粒全拿来,也满足不了那位宰相的要求。
分析问题
从第1格麦粒数加到第64格麦粒数实际上就是一个累加的过程,即循环。
第1格放1粒麦粒,用20表示,第2格放2粒麦粒,用21表示,第3格放4粒,用22表示,第4格放8粒,用23表示,依次类推,第64小格中的麦粒数就是263
总麦粒数计算公式为:sum=20+21+22+23+......+263
即问题变为:计算20+21+22+23+......+263的和
设计算法
2、还需要另外一个临时变量记录累加的结果,将临时变量命名为sum,初值为0,变量i每增加1时,就和变量sum进行一次加法运算。
1、需要有一个循环变量从0变化到63,将该变量命名为i
for i in range(0,64):
sum=sum+2**i
i=0,sum=0
i<=63
sum=sum+2**i
i=i+1
输出sum的值
N
Y
程序代码如下:
sum=0
for i in range(0,64):
sum=sum+2**i
print(sum)
程序实现
打开TEST3,完成代码填空
完成棋盘与麦粒题目
(可参考之前的累乘练习)
结果如下:
18446744073709551615
课堂总结
例子:
1.1~1000的累乘运算
2.棋盘与麦粒
知识点:
1.for循环的使用
2.For循环中两种使用列表的方法
3.列表的增、删、改和反转操作
4.range()函数的使用即注意点
恭喜你已经学会了计数循环!!!
拿着你学会的新技术去朋友面前展示吧!!!
$$