2.4 循环退出 2.5 流程控制-while
2.4 循环退出
- for循环中有配套else
- 循环结束后才输出else的语句
for i in 'abc'
print (i)
else:
print ('yes')
> a
> b
> c
> yes
- 循环中的break
- 跳出当前循环
for i in 'abc'
print (i)
break
> a
- 循环中的continue
- 跳出本次循环
for i in 'abc':
print (i)
# 不会执行往下的语句,继续下次循环
print ('o')
> a
> b
> c
- 循环中的pass
- 占位,同;
- 循环中的exit()
- 退出程序
猜数字游戏
- 系统生成一个20以内的随机整数
- 玩家有6次机会进行猜猜看, 每次猜的都有反馈(猜大了,猜小了,猜对了)
- 6次内猜对玩家赢,否则系统赢
import random
s = random.randint(1,20)
x = 6
while x >= 0:
if x == 0:
print("你输了!正确数字是{}".format(s))
break
i = input("你有%s次机会.请输入个20以内的数字:"%x)
if (not i.isdigit()) or int(i) > 20 or int(i) == 0:
print("请输入正确的值.")
x = x - 1
continue
else:
i = int(i)
if i > s:
x = x - 1
print("猜大了.")
elif i < s:
x = x - 1
print("猜小了.")
else:
print("猜对了.真不赖")
break
2.5 流程控制-while
- for循环用在有次数的循环上
- while循环用在有条件的控制上
- whle循环,知道表达式变成假,才退出while循环,表达式是一个逻辑表达式,必须返回一个True或False
- 语法
while 条件:
循环体
习题
- 1 . 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 程序分析:对n进行分解质因数,应先找到一个最小的质数i,然后按下述步骤完成: (1)如果分解后商为1,则说明分解质因数的过程已经结束,打印出即可。 (2)如果商不为1,则应打印出i的值,并用n除以i的商,作为新的正整数进行分解, 重复执行第一步。 (3)如果n不能被i整除,则i的值加1,重复执行第一步。
while 1:
n = input("请输入大于2的整数:")
if (not n.isdigit()) or (int(n) < 2):
print("请输入正确的数字.")
else:
n = int(n)
break
while n != 1:
for i in range(2, n + 1):
if n % i == 0:
print("{}".format(i), end=" ")
n = n // i
break
- 2 . 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 程序分析:采取逆向思维的方法,从后往前推断。
peach = 1 # 第10天所剩下的桃子
day = 1 # 天数从1开始,逻辑不容易出错
while day < 10: # 因为第10天只剩下1个桃子,所以只要反推9天
peach = (peach + 1) * 2 # 公式算前一天桃子数
day += 1
print ("第一天共摘了{}个桃子".format(peach))