第三章
算法的程序实现
1、用计算机编程解决的一般过程
2、Python语言程序设计
3、简单的算法及其程序设计
人生苦短
我用python
学习目标:
循环结构的算法设计
生活中的循环
软件开发中循环的使用场景
跟媳妇承认错误,说一万遍“媳妇儿,我错了!”
print “媳妇儿,我错了!”
print “媳妇儿,我错了!”
print “媳妇儿,我错了!”
…(还有997遍)…
使用循环,一句话搞定
i = 0
while i <10000:
print (“媳妇儿,我错了!”)
i += 1
一般情况下,需要多次重复执行的代码,都可以用循环的方式来完成
循环不是必须要使用的,但是为了提高代码的重复使用率,所以有经验的开发者都会采用循环
循环结构
循环结构回顾
for 循环语句格式
for 循环变量 in 列表:
语句或与剧组
for循环
for 循环作为编程语言中最强力的特征之一
Python可以使用for语句循环遍历整个序列的值
for循环所做的概括为一句话:
于… 其中的每一个元素,做…事情
for循环
在for循环中,循环变量遍历了队列中的每一个值,循环的语句体为每个值执行一次。
为了更深入了解for循环,试着思考下面这个问题,如何打印出这样的结果?
1 + 1 = 2
2 + 1 = 3
…
10 + 1 = 11
内置函数-------range()
for循环
11
for循环-range()函数
for循环-求平均数
平均数计算程序的IPO如下:
输入:待输入数字个数,数字
处理:平均数算法
输出:平均数
设计方案:
输入数字的个数n
将sum初始化为0
循环n次:
输入数字x
将x加入sum中
将sum/n作为平均数输出出来
for循环-代码
以下是程序的执行结果:
for与if相结合
如何实现这样一个程序:歌曲列表中有三首歌“Holy Diver,Thunderstruck,Rebel Rebel”,当播放到每首时,分别显示歌手名字“Dio,AC/CD,Divid Bowie”?
while循环
语法:while语句
while语句中是布尔表达式
循环体是一条或多条语句
当条件为真时,循环体重复执行
当条件为假时,循环终止
在while循环中,条件总是在循环顶部被判断,即在循环体执行之前,这种结构又被称为前测循环。
只要…条件成立,就一直做,,,
while循环
下面是使用while循环完成从0到10的求和打印平均值的例子:
x = 45
y = 80
while x < 50 and y < 100:
x = x + 1
y = y + 1
print(x, y)
WHILE循环
如果循环体忘记累加i,条件判断一直为真,循环体将一直执行,这就是所谓的死循环。
这时通常使用+c来终止一个程序
练习
1.输出程序运行结果
sum=0
for i in range(1,11):
sum=sum+i
print(sum)
i=1,sum=0
i<=10
sum=sum+i
i++
输出sum的值
N
练习题
19
练习题
编程,解决猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想吃时,只剩下一个桃子了。求第一天共摘多少个桃子。(迭代法)
课堂练习
1. 有如下程序段:
s = 0
for i in range(1, 11, 2):
s = s + i
print(s)
该程序段运行后,S的值为 。
25
课堂练习
2.有如下程序段:
k = 0
for i in range(1, 21):
if i % 3 == 0 or i % 5 == 0:
k = k + 1
print(k)
该程序段运行后,k的值为 。
9
课堂练习
3.以下程序的功能是:计算表达式1×2×3×4×5×6×7×8×9×10的值,并将计算结果存入变量sum中,请完成下面划线处程序填空。
sum = ①
for i in range(2, 11):
sum = ②
print(sum)
划线处①的程序是 ,划线处②的程序是 。
1
sum*i
课堂练习
4.有如下程序段:
f0 = 1
f1 = 1
for i in range(3, 6):
r = f0 + f1
f0 = f1
f1 = r
print(r)
该程序段运行后,r的值为 。
5
课堂练习
5. 所谓“水仙花数”是指一个三位数,其各位数字的三次方之和等于该数本身。例如:153=1^3+3^3+5^3,故153是水仙花数,下面的程序用于输出100到999之间的水仙花数,完成划线处程序填空。
for i in range(100, 1000):
b = i // 100
s = ①
g = i % 10
if :
print(i)
划线处①的程序是 ,划线处②的程序是 。
i // 10% 10
i == b**3 + s**3 + g**3
Thanks