(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
相關文章
相關標籤/搜索