相信大家小時候都有和朋友或玩伴玩過一個猜數字的小遊戲,一個人先在1~100裡面設定一個隱藏數字,其他的人去猜,看誰是最後一個猜中的就算輸,或者看誰最快猜中就算贏。
今天要示範如何用Python寫一個猜數字遊戲,
並且會從上層的思考邏輯開始,一步步構建出這個猜數字的小遊戲。
電腦設定從1~100隨機挑一個當作隱藏數字,
讓使用者扮演玩家去猜,看使用者花幾回合才猜到電腦設定的隱藏數字。
python 的 random package提供 random 函數
random.random() 會隨機產生小數x, 其中 0 <= x < 1
乘上一百就是 0 <= 100x < 100
再加一就是 1 <= 100x + 1 < 101
最後再轉型成整數,取int(),就是1~100的隨機整數
對應到python的程式碼如下
import random
number_to_guess = int(random.random() * 100) + 1
如果 猜的數字 不等於 電腦的隨機數:
則繼續猜...
對應到python的程式碼,就是while 的迴圈與流程控制
while guess != number_to_guess:
guess = int(input("\n 請猜一個數字:"))
... 檢查是否有猜中 ...
python提供內建的input("提示訊息")的標準輸入function,
接收到的預設型別是字串,我們接著轉型為int 整數,儲存到guess這個變數裡。
guess = int(input("\n 請猜一個數字:"))
如果 使用者猜的數字 等於 電腦的隨機數:
則 輸出 恭喜猜中的提示訊息
否則 提示猜得太大 還是 猜得太小
對應到python的程式碼,就是if ... elif ... else ...的流程控制。
print("歡迎來到猜數字遊戲!")
print("電腦已經選了一個1到100之間的數字。")
while guess != number_to_guess:
guess = int(input("\n 請猜一個數字:"))
# 統計猜了幾回合,每猜一次,累加1
attempts += 1
if guess < number_to_guess:
print("太小了,再試一次!")
elif guess > number_to_guess:
print("太大了,再試一次!")
else:
print(f"恭喜你,猜中了!你總共猜了 {attempts} 次。")
相當直覺,用內建的print()標準輸出function即可。
想印什麼就寫什麼,輸出有變數時記得用f-string 搭配 {變數} 包起來
例如:
print(f"恭喜你,猜中了!你總共猜了 {attempts} 次。")
import random
def guess_number_game():
number_to_guess = int(random.random() * 100) + 1
# 紀錄玩家猜的數字,初始化成-1,代表還沒開始猜
guess = -1
# 紀錄玩家猜了幾回合
attempts = 0
print("歡迎來到猜數字遊戲!")
print("電腦已經選了一個1到100之間的數字。")
while guess != number_to_guess:
guess = int(input("\n 請猜一個數字:"))
attempts += 1
if guess < number_to_guess:
print("太小了,再試一次!")
elif guess > number_to_guess:
print("太大了,再試一次!")
else:
print(f"恭喜你,猜中了!你總共猜了 {attempts} 次。")
if __name__ == "__main__":
guess_number_game()