[課后作業] 第009講:了不起的分支和循環3 | 課后測試題的答案


0. 下面的循環會打印多少次"I Love FishC"?

  1. for i in range(0, 10, 2):
  2.     print('I Love FishC')
復制代碼

5 次,因為從 0 開始,到 10 結束,步進為 2。
  
  
1. 下面的循環會打印多少次"I Love FishC"?

  1. for i in 5:
  2.     print('I Love FishC')
復制代碼

會報錯,上節課的課后習題我們提到了 in 是“成員資格運算符”,而不是像 C 語言那樣去使用 for 語法。Python 的 for 更像腳本語言的 foreach。
  
  
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],注意不包含 10 哦。


5. 目測以下程序會打印什么?

  1. while True:
  2.     while True:
  3.         break
  4.         print(1)
  5.     print(2)
  6.     break
  7. print(3)
復制代碼

會打印:
2
3

因為 break 只能跳出一層循環,記住咯!
        
   
6. 什么情況下我們要使循環永遠為真?
     
while Ture:
    循環體
   
同樣用於游戲實現,因為游戲只要運行着,就需要時刻接收用戶輸入,因此使用永遠為真確保游戲“在線”。操作系統也是同樣的道理,時刻待命,操作系統永遠為真的這個循環叫做消息循環。另外,許多通訊服務器的客戶端/服務器系統也是通過這樣的原理來工作的。
     
所以永遠為“真”雖然是“死循環”,但不一定是壞事,再說了,我們可以隨時用 break 來跳出循環!
   
   
7. 【學會提高代碼的效率】你的覺得以下代碼效率方面怎樣?有沒有辦法可以大幅度改進(仍然使用while)?

  1. i = 0
  2. string = 'ILoveFishC.com'
  3. while i < len(string)):
  4.     print(i)
  5.     i += 1
復制代碼


這段代碼之所以“效率比較低”是因為每次循環都需要調用一次 len() 函數(我們還沒有學到函數的概念,小甲魚這里為零基礎的朋友形象的解釋下:就像你打游戲打得正HIGH的時候,老媽讓你去買鹽......你有兩種選擇,一次買一包,一天去買五次,或者一次性買五包回來,老媽要就直接給她。)

  1. i = 0
  2. string = 'ILoveFishC.com'
  3. length = len(string)
  4. while i < length:
  5.     print(i)
  6.     i += 1  
復制代碼


小甲魚希望學習咱的課程的朋友不是只為了可以把程序寫出來,而是追求把代碼寫好,寫漂亮,做一個有理想、有追求的程序猿!

  
  
動動手答案:
  

本帖隱藏的內容

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

  1. count = 3
  2. password = 'FishC.com'

  3. while count:
  4.     passwd = input('請輸入密碼:')
  5.     if passwd == password:
  6.         print('密碼正確,進入程序......')
  7.         break
  8.     elif '*' in passwd:
  9.         print('密碼中不能含有"*"號!您還有', count, '次機會!', end=' ')
  10.         continue
  11.     else:
  12.         print('密碼輸入錯誤!您還有', count-1, '次機會!', end=' ')   
  13.     count -= 1
復制代碼



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

如果一個 3 位數等於其各位數字的立方和,則稱這個數為水仙花數。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一個水仙花數
  1. for i in range(100, 1000):
  2.     sum = 0
  3.     temp = i
  4.     while temp:
  5.         sum = sum + (temp%10) ** 3
  6.         temp //= 10         # 注意這里要使用地板除哦~
  7.     if sum == i:
  8.         print(i)
復制代碼



2. 三色球問題
  

有紅、黃、藍三種顏色的求,其中紅球 3 個,黃球 3 個,綠球 6 個。先將這 12 個球混合放在一個盒子中,從中任意摸出 8 個球,編程計算摸出球的各種顏色搭配。
  1. print('red\tyellow\tgreen')
  2. for red in range(0, 4):
  3.     for yellow in range(0, 4):
  4.         for green in range(2, 7):
  5.             if red + yellow + green == 8:
  6.                 # 注意,下邊不是字符串拼接,因此不用“+”哦~
  7.                 print(red, '\t', yellow, '\t', green)
復制代碼

注釋:range(2, 7) 是產生 [2, 3, 4, 5, 6] 這 5 個數,綠球不能是 1 個,因為如果綠球是 1 個的話,紅球 + 黃球需要有 7 個才能符合題意,而紅球和黃球每種只有 3 個,因此是 range(2, 7)


3. 請寫下這一節課你學習到的內容:格式不限,回憶並復述是加強記憶的好方式!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM