2020年9月14日星期一

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

申明本站飛宇網 https://feiyetopro.blogspot.com/自網路收集整理之書籍文章影音僅供預覽交流學習研究,其[書籍、文章、影音]情節內容, 評論屬其個人行為, 與本網站無關。版權歸原作者和出版社所有,請在下載 24 小時內刪除,不得用作商業用途;如果您喜歡其作品,請支持訂閱購買[正版]謝謝!


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



《零基礎入門學習Python》視頻下載地址:傳送門
  
測試題:
  
0.下面的循環會打印多少次"I Love FishC"?
  1. for i in range(0, 10, 2):
  2.     print('I Love FishC')
複製代碼


1. 下面的循環會打印多少次"I Love FishC"?
  1. for i in 5:
  2.     print('I Love FishC')
複製代碼


2.回顧一下break和continue在循環中起到的作用?
   

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

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

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

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


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

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

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


動動手:
  
細節決定成敗,看答案前記得自己先敲代碼!
  
0.設計一個驗證用戶密碼程序,用戶只有三次機會輸入錯誤,不過如果用戶輸入的內容中包含"*"則不計算在內。
  
程序演示如圖:



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

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


3.請寫下這一節課你學習到的內容:格式不限,回憶並複述是加強記憶的好方式!
  
  
回复您的答案即可查看參考答案!
  
  
測試題答案:
  

本帖隱藏的內容

0. 下面的循環會打印多少次"I Love FishC"?
  1. for i in range(0, 10, 2):
  2.     print('I Love FishC')
複製代碼
5次,因為從0開始,到10結束,步進為2。(0 2 4 6 8)
  
  
1.下面的循環會打印多少次"I Love FishC"?
  1. for i in 5:
  2.     print('I Love FishC')
複製代碼
會報錯,上節課的課後習題我們提到了in是“成員資格運算符”,而不是像C語言那樣去使用for語法。Python的for更像腳本語言的foreach。

Traceback (most recent call last):
  File "<pyshell#35>", line 1, in <module>
    for i in 5:
TypeError: 'int' object is not iterable

  
  
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.請寫下這一節課你學習到的內容:格式不限,回憶並複述是加強記憶的好方式!

小甲魚希望你認真對待作業就像你希望小甲魚推出高質量視頻一樣渴望^_^

(1)while循環
while 條件:
        循環體
(2)for 循環
雖然說Python是由C語言編寫而來的,但是Ta的for循環跟C語言的for循環不太一樣,Python的for循環顯得更加智能和強大!
語法:
for 目標 in 表達式:
        循環體
其中,目標是一個變量,表達式是一個列表或元組。
(3)range()
語法:range( [start, ] stop [ , step = 1] )
-這個BIF有三個參數,其中用中括號括起來的兩個表示這兩個參數是可選的。
-step = 1 表示第三個參數的默認值是1。
-range這個BIF的作用是生成一個從start參數的值開始到stop參數的值結束的數字序列(包含start,不包含stop)。
(4)兩個關鍵的語句:break 和continue
break是終止這個循環並跳出循環體。

continue是終止本輪循環,並進入下一輪循環,在進入下一輪循環之前,會先檢查循環條件,滿足則進入。

0 留言:

發佈留言