me:5次 標準答案:5 次,因為從 0 開始,到 10 結束,步進為 2。 1. 下麵的迴圈會列印多少次"I Love FishC"? me:錯誤,迴圈應該使用的是一個數組,比如range() 標準答案:會報錯,上節課的課後習題我們提到了 in 是“成員資格運算符”,而不是像 C 語言那樣去使用 ...
me:5次
標準答案:5 次,因為從 0 開始,到 10 結束,步進為 2。
1. 下麵的迴圈會列印多少次"I Love FishC"?
me:錯誤,迴圈應該使用的是一個數組,比如range()
標準答案:會報錯,上節課的課後習題我們提到了 in 是“成員資格運算符”,而不是像 C 語言那樣去使用 for 語法。Python 的 for 更像腳本語言的 foreach。
2.回顧一下 break 和 continue 在迴圈中起到的作用?
me:break:終止迴圈,跳出迴圈
continue:跳出本輪迴圈,進入進入下一輪迴圈
標準答案:break語句的作用是終止當前迴圈,跳出迴圈體。
continue語句的作用是終止本輪迴圈並開始下一輪迴圈(這裡要註意的是:在開始下一輪迴圈之前,會先測試迴圈條件)。
3.
4. 請問 range(10) 生成哪些數?
me:生成0-9之間的整數
標準答案:會生成 range(0, 10),list(range(0, 10)) 轉換成列表是:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],註意不包含 10 哦。
5.目測以下程式會列印什麼?
me:2和3
標準答案:
6.什麼情況下我們要使迴圈永遠為真?
標準答案:while Ture:
迴圈體
同樣用於游戲實現,因為游戲只要運行著,就需要時刻接收用戶輸入,因此使用永遠為真確保游戲“線上”。操作系統也是同樣的道理,時刻待命,操作系統永遠為真的這個迴圈叫做消息迴圈。另外,許多通訊伺服器的客戶端/伺服器系統也是通過這樣的原理來工作的。
所以永遠為“真”雖然是“死迴圈”,但不一定是壞事,再說了,我們可以隨時用 break 來跳出迴圈!
7.【學會提高代碼的效率】你的覺得以下代碼效率方面怎樣?有沒有辦法可以大幅度改進(仍然使用while)?
me:
i=0 string="ILoveFishC.com" len_str=len(string) while i < len_str: print(i) i += 1
標準答案:這段代碼之所以“效率比較低”是因為每次迴圈都需要調用一次 len() 函數(我們還沒有學到函數的概念,小甲魚這裡為零基礎的朋友形象的解釋下:就像你打游戲打得正HIGH的時候,老媽讓你去買鹽......你有兩種選擇,一次買一包,一天去買五次,或者一次性買五包回來,老媽要就直接給她。)
i = 0 string = 'ILoveFishC.com' length = len(string) while i < length: print(i) i += 1
動動手
0.
me:
i=1 password=input("請輸入密碼:") while i < 3: if password.find("*") != -1: password=input("密碼中不能含有“*”號!您還有 " + str(3-i+1) +" 次機會!請您輸入密碼:") if password == "FishC.com": print("密碼正確,進入程式......") break elif password == "FishC.com": print("密碼正確,進入程式......") break else: password=input("密碼輸入錯誤!您還有 " + str(3-i) + " 次機會!請您輸入密碼:") if password == "FishC.com": print("密碼正確,進入程式......") break i += 1
標準答案:
count = 3 password = 'FishC.com' while count: passwd = input('請輸入密碼:') if passwd == password: print('密碼正確,進入程式......') break elif '*' in passwd: print('密碼中不能含有"*"號!您還有', count, '次機會!', end=' ') continue else: print('密碼輸入錯誤!您還有', count-1, '次機會!', end=' ') count -= 1
1.
me:
for i in range(100,999): stri=str(i) if i == int(stri[0])**3 + int(stri[1])**3 + int(stri[2])**3: print(i,end=(","))
標準答案:
for i in range(100, 1000): sum = 0 temp = i while temp: sum = sum + (temp%10) ** 3 temp //= 10 # 註意這裡要使用地板除哦~ if sum == i: print(i)
2.
me:
標準答案:
print('red\tyellow\tgreen') 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)
註釋:range(2, 7) 是產生 [2, 3, 4, 5, 6] 這 5 個數,綠球不能是 1 個,因為如果綠球是 1 個的話,紅球 + 黃球需要有 7 個才能符合題意,而紅球和黃球每種只有 3 個,因此是 range(2, 7)