2020年9月14日星期一

[課後作業] 第004講:改進我們的小遊戲|課後測試題及答案

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


[課後作業] 第004講:改進我們的小遊戲|課後測試題及答案 



《零基礎入門學習Python》視頻下載地址:傳送門

測試題:

0.請問以下代碼會打印多少次“我愛魚C!”
  1. while 'C':
  2.     print('我愛魚C!')
複製代碼


1. 請問以下代碼會打印多少次“我愛魚C!”
  1. i = 10
  2. while i:
  3.     print('我愛魚C!')
  4.     i = i - 1
複製代碼

2.請寫出與10 < cost < 50等價的表達式


3. Python3中,一行可以書寫多個語句嗎?


4. Python3中,一個語句可以分成多行書寫嗎?


5.請問Python的and操作符和C語言的&&操作符有何不同?【該題針對有C或C++基礎的朋友】


6.聽說過“短路邏輯(short-circuit logic)”嗎?


動動手:

0.完善第二個改進要求(為用戶提供三次機會嘗試,機會用完或者用戶猜中答案均退出循環)並改進視頻中小甲魚的代碼。


1.嘗試寫代碼實現以下截圖功能:






2. 嘗試寫代碼實現以下截圖功能:





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


回复您的答案即可查看參考答案!


測試題答案:

本帖隱藏的內容

0.請問以下代碼會打印多少次“我愛魚C!”

死循環,會一直打印“我愛魚C!”(嗯,這也算是永遠支持魚C的方法之一),直到崩潰或者用戶按下快捷鍵CTRL + C(強制結束)

造成死循環的原因是while後邊的條件永遠為真(True),在Python看來,只有以下內容會被看作假(注意冒號括號裡邊啥都沒有,連空格都不要有!):False None 0 "" '' () [] {}

其他一切都被解釋為真!

不妨試試:
  1. while '':
  2.     print('進入循環')
  3. print('退出循環')
複製代碼

或者
  1. while False:
  2.     print('進入循環')
  3. print('退出循環')
複製代碼

或者
  1. while 0:
  2.     print('進入循環')
  3. print('退出循環')   
複製代碼



1.請問以下代碼會打印多少次“我愛魚C!”

會打印10次。


2.請寫出與10 < cost < 50等價的表達式

(10 < cost) and (cost < 50)


3. Python3中,一行可以書寫多個語句嗎?

可以,語句之間用分號隔開即可,不妨試試:
>>> print('I love fishc');print('very much!')


4. Python3中,一個語句可以分成多行書寫嗎?

可以,一行過長的語句可以使用反斜杠或者括號分解成幾行,不妨試試:
  1. >>> 3 > 4 and \
  2.   1 < 2
複製代碼
或者
  1. >>> ( 3 > 4 and
  2.   1 < 2 )
複製代碼


5. 【該題針對有C或C++基礎的朋友】請問Python的and操作符和C語言的&&操作符有何不同?

有圖有真相(C\C++ VS Python):




VS




6.聽說過“短路邏輯(short-circuit logic)”嗎?

邏輯操作符有個有趣的特性:在不需要求值的時候不進行操作。這麼說可能比較“高深”,舉個例子,表達式x and y,需要x和y兩個變量同時為真(True)的時候,結果才為真。因此,如果當x變量得知是假(False)的時候,表達式就會立刻返回False,而不用去管y變量的值。

這種行為被稱為短路邏輯(short-circuit logic)或者惰性求值(lazy evaluation),這種行為同樣也應用與or操作符,這個後邊的課程小甲魚會講到,不急。

實際上,Python的做法是如果x為假,表達式會返回x的值(0),否則它就會返回y的值(例子參考樓上那題)。



動動手答案:

本帖隱藏的內容

0.完善第二個改進要求(為用戶提供三次機會嘗試,機會用完或者用戶猜中答案均退出循環)並改進視頻中小甲魚的代碼。

需要注意的地方在代碼中已經註釋!

  1. import random
  2. times = 3
  3. secret = random.randint(1,10)
  4. print('------------------我愛魚C工作室------------------')
  5. # 這裡先給guess賦值(賦一個絕對不等於secret的值)
  6. guess = 0
  7. # print()默認是打印完字符串會自動添加一個換行符,end=" "參數告訴print()用空格代替換行
  8. # 嗯,小甲魚覺得富有創意的你應該會嘗試用end="JJ"?
  9. print("不妨猜一下小甲魚現在心裡想的是哪個數字:", end=" ")
  10. while (guess != secret) and (times > 0):
  11.     temp = input()
  12.     guess = int(temp)
  13.     times = times - 1 # 用戶每輸入一次,可用機會就-1
  14.     if guess == secret:
  15.         print("我草,你是小甲魚心裡的蛔蟲嗎?!")
  16.         print("哼,猜中了也沒有獎勵!")
  17.     else:
  18.         if guess > secret:
  19.             print("哥,大了大了~~~")
  20.         else:
  21.             print("嘿,小了,小了~~~")
  22.         if times > 0:
  23.             print("再試一次吧:", end=" ")
  24.         else:
  25.             print("機會用光咯T_T")
  26. print("遊戲結束,不玩啦^_^")
複製代碼


1. 嘗試寫代碼實現以下截圖功能:

  1. temp = input('請輸入一個整數:')
  2. number = int(temp)
  3. i = 1
  4. while number:
  5.     print(i)
  6.     i = i + 1
  7.     number = number - 1
複製代碼


2. 嘗試寫代碼實現以下截圖功能:

  1. temp = input('請輸入一個整數:')
  2. number = int(temp)
  3. while number:
  4.     i = number - 1
  5.     while i:
  6.         print(' ', end = '')        # end = ''是为了让print()不自动换行
  7.         i = i - 1
  8.     j = number
  9.     while j:
  10.         print('*', end = '')
  11.         j = j - 1
  12.     print()
  13.     number = number - 1
複製代碼


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

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

很多魚油對於改善這個遊戲提出了建議,大概有以下幾點需要改進:
(1)猜錯的時候程序應該給出提示,例如告訴用戶輸入的值是大了還是小了;
(2)每運行一次程序只能猜一次,應該多提供幾次機會給用戶猜測;
(3)每次運行程序,答案應該是隨機的。因為答案固定的話,容易導致答案外洩。
    條件分支
第一個改進要求:猜錯的時候程序提示用戶當前的輸入答案大了還是小了。
                                         Python的比較操作符
>左邊大於右邊
>=左邊大於等於右邊
<左邊小於右邊
<=左邊小於等於右邊
==左邊等於右邊
!=左邊不等於右邊
Python的條件分支語法:
if 條件 :
        條件為真(True)執行的操作
else :
        條件為假(False)執行的操作
改進要求1實現:
  1. guess = int(input("不妨猜一下小甲鱼心里的数字:"))
  2. if guess == 8:
  3. print("猜中了")
  4. else:
  5. if guess >8:
  6. print("猜大了")
  7. else:
  8. print("猜小了")
  9. print("游戏结束,不玩啦")
while 循環
第二個改進要求:程序應該提供多次機會給用戶猜測。
Python 的while 循環語法:
while 條件:
        條件為真(True)執行的操作
改進要求2實現:
  1. guess = int(input("不妨猜一下小甲鱼心里的数字:"))
  2. while guess != 8:
  3. print("猜错了,请重新输入吧")
  4. guess = int(input("不妨猜一下小甲鱼心里的数字:"))
  5. if guess == 8:
  6. print("猜中了")
  7. else:
  8. if guess >8:
  9. print("猜大了")
  10. else:
  11. print("猜小了")
  12. print("游戏结束,不玩啦")
這里希望給一個猜的次數限制(例如3次),當三次內沒猜中也停止遊戲。
這裡就應該使用邏輯操作符and 了,Python的and 邏輯操作符可以將任意表達式連接在一起,並得到一個布爾類型的值。
改進要求2實現:
  1. guess = int(input("不妨猜一下小甲鱼心里的数字:"))
  2. i=1
  3. while guess != 8 and i<3:
  4. print("猜错了,请重新输入吧")
  5. guess = int(input("不妨猜一下小甲鱼心里的数字:"))
  6. if guess == 8:
  7. print("猜中了")
  8. else:
  9. if guess >8:
  10. print("猜大了")
  11. i+=1
  12. else:
  13. print("猜小了")
  14. i+=1
  15. print("游戏结束,不玩啦")
引入外援
第三個改進要求:每次運行程序產生的答案是隨機的。
我們需要引入外援,random模塊
這個random模塊裡有一個函數叫做:randint(),Ta會返回一個隨機的整數。
我們可以利用這個函數來改進我們的遊戲。
  1. import random
  2. secret = random.randint(1,10)
  3. guess = int(input("不妨猜一下小甲鱼心里的数字:"))
  4. while guess != secret:
  5. print("猜错了,请重新输入吧")
  6. guess = int(input("不妨猜一下小甲鱼心里的数字:"))
  7. if guess == secret:
  8. print("猜中了")
  9. else:
  10. if guess >secret:
  11. print("猜大了")
  12. else:
  13. print("猜小了")
  14. print("游戏结束,不玩啦")


0 留言:

發佈留言