1. 程式人生 > >第009講:了不起的分支和迴圈3 | 學習記錄(小甲魚零基礎入門學習Python)

第009講:了不起的分支和迴圈3 | 學習記錄(小甲魚零基礎入門學習Python)

(標答出處: 魚C論壇)
《零基礎入門學習Python》

基礎題:

0、下面的迴圈會列印多少次"I Love FishC"?

for i in range(0, 10, 2):
print(‘I Love FishC’)

(0,2,4,6,8)共5次

1、下面的迴圈會列印多少次"I Love FishC"?

for i in 5:
print(‘I Love FishC’)

會報錯。因為i是字串,而5是整型數字,兩者不能使用in這個成員函式,
應該為for I in range (1,6) , 這樣會列印5次

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

break直接跳出迴圈,而continue是跳過這次的迴圈,繼續下次

3、請問 range(10) 生成哪些數?

(0,1,2,3,4,5,6,7,8,9)

4、目測以下程式會列印什麼?

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

會打印出
2
3
因為第一個print (1)是在break之後,而那個時候已經由break跳出迴圈了所以不會接著執行在他之後的print (1)。

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

沒有限制條件,但是要無限次輸入東西

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

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

string = 'ILoveFishC.com'
i=len(string)
while i>0 :
    print (i)
i-=1

動動手:

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

mima = 'FishC.com'
i = 3
while i>0 :
    temp = input ("請輸入密碼:")
    if temp != mima :
        print('密碼輸入錯誤!您還有',i-1,"次機會!")
        i-=1
    else :
        print ("密碼輸入正確,進入程式......")
        break ;

2、編寫一個程式,求 100~999 之間的所有水仙花數。
如果一個 3 位數等於其各位數字的立方和,則稱這個數為水仙花數。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一個水仙花數。

mylist = []
for i in range (100,1000) :
    mylist = str(i)
    a = int (mylist[0])
    b = int (mylist[1])
    c = int (mylist[2])
    if  ( i == (a**3+b**3+c**3) ) :
        print (i)

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

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

標答:

0、下面的迴圈會列印多少次"I Love FishC"?

for i in range(0, 10, 2):
print(‘I Love FishC’)

0,2,4,6,8,會列印5次

1、下面的迴圈會列印多少次"I Love FishC"?
for i in 5:
print(‘I Love FishC’)
會報錯 ,語法錯誤,in 是成員運算子,後面跟序列:列表或字串等

2、回顧一下 break 和 continue 在迴圈中起到的作用?
break:跳出迴圈,不再執行else; continue:結束本輪迴圈立即進入下一次迴圈

3、請談下你對列表的理解?
功能變強的陣列

4、請問 range(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

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

程式中從頭執行到尾的程式碼
需要一直等待使用者輸入命令時,需要使用者重複輸入時

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

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

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

細節決定成敗,看答案前記得自己先敲程式碼!

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

程式演示如圖:

9、編寫一個程式,求 100~999 之間的所有水仙花數。
如果一個 3 位數等於其各位數字的立方和,則稱這個數為水仙花數。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一個水仙花數。

i=100
while i <= 999:
	a=i//100
	b=i%100//10
	c=i%10
	if i==(a3+b3+c**3):
		print(i)
		i+=1

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

print(‘red\tyellow\tblue’)
for red in range(0, 4):
for yellow in range(0, 4):
for green in range(2, 7):
if red + yellow + green == 8:
''' 注意,下邊不是字串拼接,因此不用“+”哦~'''
print(red, ‘\t’, yellow, ‘\t’, green)