小甲魚《零基礎學習Python》課後筆記(九):了不起的分支和迴圈2
阿新 • • 發佈:2019-02-17
測試題
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