1. 程式人生 > >小甲魚《零基礎學習Python》課後筆記(九):了不起的分支和迴圈2

小甲魚《零基礎學習Python》課後筆記(九):了不起的分支和迴圈2

測試題

0.下面的迴圈會列印多少次

for i in range(0, 10, 2):  
    print('I love FishC') 

 5次。range(0, 10, 2)得到[0,2,4,6,8],總共5次。

1. 下面的迴圈會列印多少次“I Love FishC”?

for i in 5:  
    print('I Love FishC')  

會報錯。in是成員運算子。

2.回顧一下break和continue在迴圈中提到的作用?

break是跳出迴圈,continue是中止本次迴圈,進入下次迴圈。

3.請談下你對列表的理解?

下節補充。

4.請問range(10)生成哪些數?

會生成range(0,10)

>>> list(range(0,10))  
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  

5.目測以下程式會列印什麼?

while True:  
    while True:  
        break  
        print(1)  
    print(2)  
    break  
print(3)  

列印2,3。第一個break跳過print(1),跳到print(2);第二個break跳出第2個while迴圈,跳到print(3)。

6.什麼情況下我們要使迴圈永遠為真?

   一些需要一直執行的程式,如遊戲實現,因為遊戲只要執行著,就需要時刻接收使用者輸入,因此使用永遠為真確保遊戲“線上”。

7.【學會提高程式碼的效率】你覺得以下程式碼效率方面怎樣?有沒有辦法可以大幅度改進(任然使用while)?

i = 0  
string = 'ILoveFishC.com'  
while i < len(string):  
    print(i)  
    i += 1  

改進後,主要是不用每次迴圈都呼叫len函式。

i = 0  
string = 'ILoveFishC.com'  
length = len(string)  
while i < length:  
    print(i)  
    i += 1  

動動手

0.設計一個驗證使用者密碼程式,使用者只有三次機會輸入錯誤密碼,不過如果使用者輸入的內容包含“*”則不計算在內。

count = 3  
password = 'allen'  
while count > 0:  
    number = input('請輸入密碼:')  
    if number == password:  
        print('密碼正確!')  
        break  
    elif '*' in number:  
        print('密碼中不能含有"*"號!您還有' + count + '次機會!')  
        continue  
    else:  
        print('輸入密碼有誤!您還有', count - 1, '次機會!')  
    count -= 1  

1.編寫一個程式,求100~999之間的所有水仙花數。

如果一個 3 位數等於其各位數字的立方和,則稱這個數為水仙花數。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一個水仙花數。

for i in range(100,1000):  
    baiwei = i//100  
    shiwei = (i - 100*baiwei)//10  
    gewei = i%10  
    sum = baiwei**3 + shiwei**3 + gewei**3  
    if sum == i:  
        print(i)  

153  370  371  407 

2.三色球問題

有紅、黃、藍三種顏色的求,其中紅球 3 個,黃球 3 個,綠球 6 個。先將這 12 個球混合放在一個盒子中,從中任意摸出 8 個球,程式設計計算摸出球的各種顏色搭配

print('red\tyellow\tgreen')  
for red in range(0,4):  
    for yellow in range(0,4):  
        for green in range(0,7):  
            if red + yellow + green == 8:  
                print(red,'\t',yellow,'\t',green)  

執行結果:

red    yellow    green
0        2       6
0        3       5
1        1       6
1        2       5
1        3       4
2        0       6
2        1       5
2        2       4
2        3       3
3        0       5