内容正文:
循环结构
之for循环
Python算法与程序设计
仁寿一中北校区 伍吉超
普通高中实验教科书
SuanFa Yu ChengXu SheJi
《循环结构》
SuanFa Yu ChengXu SheJi
a(1)
a(2)
a(5)
a(4)
a(3)
a(6)
Python 算法与程序设计
2
输入函数:<变量>=input (‘提示信息’)
如:x=input (“x”)
输出函数:print(输出内容)
如:print (j , k)
赋值语句:变量=表达式
(1) 基本赋值:a=9 或m=x - y
(2) 计数器的应用:如常用I ,k , j ,x来统计个数。
i=i+1 或 k=k+1 或 x=x+1 其中的变量初值都为0
温故知新
《循环结构》
SuanFa Yu ChengXu SheJi
a(1)
a(2)
a(5)
a(4)
a(3)
a(6)
Python 算法与程序设计
3
(2)累加器:将每一次i的值都累加到S中去
S=S+i (其中的S为累加和,初值须为0)
还有相似的应用:s=s+x 或 k=k+5等形式。
(3)累乘器:将每一次k的值都累乘到T中去
T=T*k (其中的T为累乘积,初值须为1)
(4)交换器:交换变量A,B的值
T=A
A=B
B=T
这里是用T做中间变量来实现了A,B变量值的交换。
温故知新
《循环结构》
SuanFa Yu ChengXu SheJi
a(1)
a(2)
a(5)
a(4)
a(3)
a(6)
Python 算法与程序设计
4
在印度有一个古老的传说:舍罕王打算奖赏国际象棋的发明人——宰相西萨·班·达依尔。
国王问他想要什么。他对国王说:陛下,请您在这张棋盘的第1个小格里,赏给我1粒麦子,在第2个小格里给2粒,第3小格给4粒,以后每一小格都比前一小格加1倍。请您像这样摆满棋盘上所有64格的麦粒,都赏给您的仆人吧!国王觉得这个要求太容易满足了就命令给他这些麦粒。当人们把一袋一袋的麦子搬来开始计数时,国王才发现:就是把全印度甚至全世界的麦粒全拿来,也满足不了那位宰相的要求。
那么,宰相要求得到的麦粒到底有多少呢?
国际象棋棋盘上的麦粒
你想知道答案吗?
《循环结构》
SuanFa Yu ChengXu SheJi
a(1)
a(2)
a(5)
a(4)
a(3)
a(6)
Python 算法与程序设计
5
传说在很久以前,印度有个叫塞萨的人,为了能使国王忘掉战争,精心设计了一种游戏(国际象棋)献给国王。国王对这种游戏非常满意,决定赏赐塞萨。国王问塞萨需要什么,塞萨指着象棋盘上的小格子说:“就按照棋盘上的格子数,在第一个小格内赏我1粒麦子,在第二个小格内赏我2粒麦子,第三个小格内赏4粒,照此下去,每一个小格内的麦子都比前一个小格内的麦子加一倍。陛下,把这样摆满棋盘所有64格的麦粒,都赏给我吧。”国王听后不加思索就满口答应了塞萨的要求。
《循环结构》
SuanFa Yu ChengXu SheJi
a(1)
a(2)
a(5)
a(4)
a(3)
a(6)
Python 算法与程序设计
6
累加的方法:如何编程?
每一行都是:s=s+i
(i 分别取值1、2、3、……、100)
我们说,像这样,在一定条件下,反复执行某种操作的结构,我们称之为循环结构。
问题:1+2+3+…+100 =?
被重复
s = 0
s = s + 1
s = s + 2
s = s + 3
s = s + 4
s = s + 5
s = s + 6
……
s = s + 98
s = s + 99
s = s + 100
Print(s)
每一行都是:s=s+数字
用 i 表示
1、2、3、…、100
如果采用顺序结构来编写累加程序如下:
《循环结构》
SuanFa Yu ChengXu SheJi
a(1)
a(2)
a(5)
a(4)
a(3)
a(6)
for循环列表的前两种表达方式:
(1)直接罗列的方式。如: for value in [1,2,3,4,5]:
(2)先定义后使用的方式。
如: values=[1,2,3,4,5]
for value in values:
Python 算法与程序设计
7
《循环结构》
SuanFa Yu ChengXu SheJi
a(1)
a(2)
a(5)
a(4)
a(3)
a(6)
格式:
for 循环变量 in range(第一个值,第二个值, 步长):
语句组(循环体)
说明:
1、第一个值就是循环变量最初的值,执行完第一次循环体后,循环变量的值会自动增加一个步长;
2、如果这时没有达到或超过第二个值,就会有下次循环。直到多次累加步长后,循环变量的值总会达到或超过第二个值,从而结束循环。所以在设计循环时,第二个值的设置很关键。(往往是需要运算的值加减1)
3、步长为1时,可省略不写。
Python 算法与程序设计
8
《循环结构》
SuanFa Yu ChengXu SheJi
a(1)
a(2)
a(5)
a(4)
a(3)
a(6)
Python 算法与程序设计
9
For循环语句执行过程之流程图
循环变量=第一个值
循环变量达到第二值否?
执行循环体
循环变量增加一个步长值
是
否
《循环结构》
SuanFa Yu ChengXu SheJi
a(1)
a(2)
a(5)
a(4)
a(3)
a(6)
Python 算法与程序设计
10
计算:s=1+2+3+4+5的值
S=0
for i in range(1,6):
s=s + i
print (s)
运行分析:
次数 i s
1 1 1
2 2 3
3 3 6
4 4 10
5 5 15
6
循环次数:(5-1)/1+1=5次
循环结束时,循环变量i最终的值:
初值+步长*次数,即:1+1*5=6
《循环结构》
SuanFa Yu ChengXu SheJi
a(1)
a(2)
a(5)
a(4)
a(3)
a(6)
Python 算法与程序设计
11
计数循环示例
A=1
B=8
for j in range(A,B,3):
k=j*j
print (j , k)
运行分析:
循环次数 j k
1 1 1
2 4 16
3 7 49
10
循环次数:(8-1)/3+1=3次
循环结束时,循环变量j最终的值:
初值+步长*次数,即:1+3*3=10
《循环结构》
SuanFa Yu ChengXu SheJi
a(1)
a(2)
a(5)
a(4)
a(3)
a(6)
Python 算法与程序设计
12
任务一:高斯数学的问题:1+2+3+…+100 =?
高斯:公式的方法,即(1+100)*100/2=5050
其他学生:累加的方法,即1加2,再加3,再加4,一直加到100,最后得到结果5050
计算方法
《循环结构》
SuanFa Yu ChengXu SheJi
a(1)
a(2)
a(5)
a(4)
a(3)
a(6)
Python 算法与程序设计
13
s = 0
for i in range(1,101):
s = s + i
Print(s)
计算高斯数学的和程序:1+2+3+…+100的和
s = 0
s = s + 1
s = s + 2
s = s + 3
s = s + 4
s = s + 5
s = s + 6
……
s = s + 98
s = s + 99
s = s + 100
Print (s)
单击此处编辑母版文本样式
第二级
第三级
第四级
第五级
《循环结构》
SuanFa Yu ChengXu SheJi
a(1)
a(2)
a(5)
a(4)
a(3)
a(6)
Python 算法与程序设计
14
'任务二
'计算S=10+20+30+….+100
s = 0
For i in range(10,101,10):
s=s+i
Print( s)
s=0
s=s+10
s=s+20
s=s+30
…
s=s+100
s=s + 数字
用i表示
(i 分别取值10、20、30、…、100)
i 的步长是10
循环次数公式:
(终值-初值)/步长+1 的整数部分
循环变量最终的值:初值+步长*次数
《循环结构》
SuanFa Yu ChengXu SheJi
a(1)
a(2)
a(5)
a(4)
a(3)
a(6)
Python 算法与程序设计
15
高斯的数学问题的拓展学习实例: 先完善程序,再运行!
挑战一: 请用Python编程计算"s=1+3+5+...+99 的值"
s=0
for x in range( 1,100,____) : # 计算100以内奇数之和
s=s+x
print("s=:",s)
《循环结构》
SuanFa Yu ChengXu SheJi
a(1)
a(2)
a(5)
a(4)
a(3)
a(6)
挑战二: 请用Python编程计算"s=2+4+6+...+100 的值"
s=0
for x in range( ___,__,__) : # 计算100以内偶数之和
s=s+x
print("s=:",s)
Python 算法与程序设计
16
《循环结构》
SuanFa Yu ChengXu SheJi
a(1)
a(2)
a(5)
a(4)
a(3)
a(6)
挑战三: 请用Python编程计算"s=100+90+80+...+10 的值"
s=0
for x in range( ____,____,____) : # 计算100以内10的整数之和
s=s+x
print("s=:",s)
Python 算法与程序设计
17
《循环结构》
SuanFa Yu ChengXu SheJi
a(1)
a(2)
a(5)
a(4)
a(3)
a(6)
挑战四: 请用Python编程计算"s=1+1/2+1/3+...+1/100 的值"
s=0
for x in range( __,__,__) : # 计算100以内整数的倒数之和
s=____________
print("s=:",s)
Python 算法与程序设计
18
《循环结构》
SuanFa Yu ChengXu SheJi
a(1)
a(2)
a(5)
a(4)
a(3)
a(6)
用python编程解决 国际象棋棋盘上的麦粒 的数学题
Python 算法与程序设计
19
《循环结构》
SuanFa Yu ChengXu SheJi
a(1)
a(2)
a(5)
a(4)
a(3)
a(6)
s=0
for i in range(0,64,1):
j=2**i
s=s+j
print("s=",s)
print("i=",i)
Python 算法与程序设计
20
《循环结构》
SuanFa Yu ChengXu SheJi
a(1)
a(2)
a(5)
a(4)
a(3)
a(6)
谢谢聆听!
Python 算法与程序设计
21
《循环结构》
SuanFa Yu ChengXu SheJi
a(1)
a(2)
a(5)
a(4)
a(3)
a(6)
$