(15)while循环

循环结构 : while
循环结构的特点:减少代码的冗余,提高代码的效率
注意:只要是循环一定要有判断条件退出循环,不然就成了死循环,程序会一直在内存执行,直到内存耗尽,暴毙.....
语法形式: while 条件表达式: code1 code2 (一)打印数字1~10 i = 1 # 定义一个初始化的变量 # 写一个循环的条件 while i <= 10: # 代码体,写逻辑 print(i) i += 1 # 程序每跑一遍,i就+1,直到1=10,循环停下来 执行结果: 1 2 3 4 5 6 7 8 9 10 (二) 计算1~100的累加和 ?
写法一: i = 1 total = 0 while i <= 100: total += i i += 1 print(total) 执行结果: 5050
写法二:
i = 1
total = 0  # 初始化一个变量
flag = True   #  写一个标志符
while flag: # 只有为真的时候才会循环
    total += i
    i += 1
    # 当i位101的时候,为了避免在回到循环判断中,直接在此处终止
    if i == 101:
        flag = False  # 更改标志符状态
print(total)
执行结果:
5050

(三)打印一行十个小星星
(1)最简单的方法:功能的确实现了,但是看起来比较low
print("*"*10)
执行结果:
**********
(2)升级版:用循环写
i = 0
while i < 10:
    print("*", end="") # end=''以什么结尾,这里以空制符串结尾,保证星星不会换行,打印在一排
    i += 1
执行结果:
**********
(3)进阶版:
i = 0
strvar = ''
while i < 10:
    strvar += "*"
    i += 1
print(strvar)
执行结果:
**********
(四)while和if的混合使用
(1)要求:打印一行十个小星星 奇数个打印★ 偶数个打印☆
i = 0
while i < 10:
    if i % 2 == 0:
        print("★", end="")
    else:
        print("☆", end="")
    i += 1
执行结果:
★☆★☆★☆★☆★☆
(2)要求:一个循环 打印十行十列隔列变色小星星
i = 0
while i < 100:
    if i % 2 == 0:
        print("☆", end="")
    else:
        print("★", end="")
    if i % 10 == 9:  # 换行,i是从0开始的,i逢9就要开始换行
        print()
    i += 1
执行结果:
☆★☆★☆★☆★☆★
☆★☆★☆★☆★☆★
☆★☆★☆★☆★☆★
☆★☆★☆★☆★☆★
☆★☆★☆★☆★☆★
☆★☆★☆★☆★☆★
☆★☆★☆★☆★☆★
☆★☆★☆★☆★☆★
☆★☆★☆★☆★☆★
☆★☆★☆★☆★☆★

(五)while循环的嵌套(多个while循环)
(1)用两个循环打印十行十列变色小星星
i = 0
while i < 10:  # 外循环
    j = 0
    while j < 10:  # 内循环
        if i % 2 == 0:  # 控制行
            print("★", end="")
        else:
            print("☆", end="")
        j += 1  # 程序运行一次,j+1,一直满足内循环,所以外循环走一次,内循环走十次
    print()  # 换行,外面的循环每执行一次,就打印一个换行
    i += 1
执行结果:
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
(2)打印99乘法口诀表
i = 1
while i <= 9:
    j = 1
    while j <= i:
        print("%d*%d=%-2d" % (j, i, i * j), end=" ") # end这里有空格
        j += 1
    print()  # 换行
    i += 1
执行结果:是不是beautiful
1*1=1  
1*2=2  2*2=4  
1*3=3  2*3=6  3*3=9  
1*4=4  2*4=8  3*4=12 4*4=16 
1*5=5  2*5=10 3*5=15 4*5=20 5*5=25 
1*6=6  2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 
1*7=7  2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 
1*8=8  2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 
1*9=9  2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 
作业:自己下去试一下99乘法口诀的其他打发,比如,方向相反的乘法口诀
(3)百钱买百鸡,公鸡1块钱一只,母鸡3块钱一只,小鸡5毛钱一只,100块钱买100只鸡.并且三种鸡都要买到,有多少种买法?
x = 1
while x < 99: # 每种鸡最多买98只
    y = 1
    while y < 33:
        z = 1
        while z < 99:
            # 三款鸡加一起是100只 三款鸡价格加一起是100块 两个条件同时满足
            if (x + y + z == 100) and (x + 3 * y + 0.5 * z == 100):
                print(x, y, z)
            z += 1
        y += 1
    x += 1
    
执行结果:
5 19 76
10 18 72
15 17 68
20 16 64
25 15 60
30 14 56
35 13 52
40 12 48
45 11 44
50 10 40
55 9 36
60 8 32
65 7 28
70 6 24
75 5 20
80 4 16
85 3 12
90 2 8
95 1 4

 

  

 

  

 

posted @ 2019-05-01 14:33  夜雨潇湘子  阅读(376)  评论(0编辑  收藏  举报