1. 程式人生 > >(5)while循環

(5)while循環

升級 flag 程序運行一次 寫法 循環 als 自己 效率 真的

循環結構 : 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乘法口訣的其他打發,比如,方向相反的乘法口訣

  

(5)while循環