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))