題目
你要根據線索猜出一個三位數。游戲會根據你的猜測給出以下提示之一:如果你猜對一位數字但數字位置不對,則會提示“Pico”;如果你同時猜對了一位數字及其位置,則會提示“Fermi”;如果你猜測的數字及其位置都不對,則會提示“Bagels”。你有10次猜數字機會
花十分鐘,來實現一下吧! 輸出結果如下:
請勿偷看答案喲!
為了用Python實現這個猜數字游戲,我們可以遵循以下步驟:
- 隨機生成一個三位數(例如100到999之間)。
- 允許用戶進行最多10次猜測。
- 根據用戶的猜測,使用“Pico”,“Fermi”,“Bagels”作為反饋。
- 如果用戶在10次以內猜中數字,則宣布勝利。
下面是實現這個游戲的Python代碼:
import randomdef guess_number_game():target_number = random.randint(100, 999) # 生成目標數字guesses_left = 10 # 初始化猜測次數guess = Noneprint("歡迎來到猜數字游戲!")print("我已經想好了一個100到999之間的數字。")print("你有10次機會來猜這個數字。")while guesses_left > 0:guess = input("請輸入你的猜測(三位數): ").strip()# 檢查輸入是否有效if not guess.isdigit() or len(guess) != 3 or int(guess) < 100 or int(guess) > 999:print("無效的輸入,請輸入一個有效的三位數。")continueguess = int(guess)pico = 0 # 猜對數字但位置不對的數量fermi = 0 # 猜對數字且位置對的數量for i in range(3):if guess // 10**(2-i) % 10 == target_number // 10**(2-i) % 10:if i == target_number.count(guess // 10**(2-i) % 10):fermi += 1else:pico += 1if fermi == 3:print("恭喜你!猜對了!")breakelif pico > 0:print("Pico")elif fermi > 0:print("Fermi")else:print("Bagels")guesses_left -= 1if guesses_left == 0:print(f"很遺憾,你的機會用完了。正確答案是:{target_number}")if __name__ == "__main__":guess_number_game()
注意:
- 代碼中,我們使用了
//
運算符來進行整除,以及%
運算符來找到每一位上的數字。 count()
方法用于檢查在目標數字中某個數字出現的次數,這有助于確定是否猜對了位置。- 如果用戶輸入的不是一個有效的三位數,程序會提示用戶重新輸入。
- 當用戶猜對全部數字且位置也正確時,游戲結束并宣布用戶勝利。如果用戶在10次內未能猜中,則顯示正確答案。