5.1 問題
編寫guess.py腳本,實現以下目標:
系統隨機生成100以內的數字
要求用戶猜生成的數字是多少
最多猜5次,猜對結束程序
如果5次全部猜錯,則輸出正確結果
5.2 方案
引用random模塊生成1-100的隨機數,用while循環語句讓猜數字次數大於0,提示並獲取用戶輸入整數值,在進行猜數字對錯判斷前先用if嵌套判斷方式確定輸入值是否合法,如果合法進行猜數字對錯判斷,判斷結束後猜數字次數需減1,如果不合法重新進入循環,此時循環次數不減少
此程序需要注意的部分在於:
每局對錯判斷之後,猜數字次數一定要減1,這樣猜數字次數等於0的時候,循環就結束了
5.3 步驟
實現此案例需要按照如下步驟進行。
步驟一:編寫腳本
[root@localhost day02]# vim guess.py
#!/usr/bin/env python3
import random
secret = random.randint(1,100) #生成隨機數
time = 5 #猜數字的次數
print("---------歡迎來到猜數字的地方,請開始---------")
while time > 0:
guess = int(input("*數字區間0-100,請輸入你猜的數字:"))
print("你輸入數字是:",guess)
if 0 <= guess < 100:
if guess == secret:
print("猜對了,真厲害")
else:
print("太遺憾了,你猜錯了,你還有",time-1,"次機會")
time -= 1
else:
print("輸入非法,請重新輸入")
print("遊戲結束,正確的結果是:",secret)
步驟二:測試腳本執行
[root@localhost day02]# python3 guess.py
---------歡迎來到猜數字的地方,請開始---------
*數字區間0-100,請輸入你猜的數字:100
你輸入數字是: 100
輸入非法,請重新輸入
*數字區間0-100,請輸入你猜的數字:0
你輸入數字是: 0
太遺憾了,你猜錯了,你還有 4 次機會
*數字區間0-100,請輸入你猜的數字:-1
你輸入數字是: -1
輸入非法,請重新輸入
*數字區間0-100,請輸入你猜的數字:12
你輸入數字是: 12
太遺憾了,你猜錯了,你還有 3 次機會
*數字區間0-100,請輸入你猜的數字:34
你輸入數字是: 34
太遺憾了,你猜錯了,你還有 2 次機會
*數字區間0-100,請輸入你猜的數字:56
你輸入數字是: 56
太遺憾了,你猜錯了,你還有 1 次機會
*數字區間0-100,請輸入你猜的數字:89
你輸入數字是: 89
太遺憾了,你猜錯了,你還有 0 次機會
遊戲結束,正確的結果是: 47
步驟三:改進腳本
import random
num = random.randint(1, 100)
counter = 0
while counter < 5:
answer = int(input('guess the number: '))
if answer > num:
print('猜大了')
elif answer < num:
print('猜小了')
else:
print('猜對了')
break
counter += 1
else: # 循環被break就不執行了,沒有被break才執行
print('the number is:', num)
測試腳本執行:
[root@localhost day02]# python3 guess2.py
猜大了
guess the number: 30
猜小了
guess the number: 50
猜小了
guess the number: 70
猜小了
guess the number: 78
猜小了
the number is: 88
[root@localhost day02]# python3 guess2.py
guess the number: 16
猜小了
guess the number: 90
猜大了
guess the number: 50
猜大了
guess the number: 30
猜對了