我正在嘗試制作一個程式,讓玩家輸入一個數字(1-6)來猜測一個公平的隨機骰子落在什么位置。然后它應該刺激擲骰子,并通知玩家它是否正確。它應該繼續要求玩家通過輸入一個數字來猜測,直到猜測正確為止。
如果正確,游戲應該結束。如果不正確,游戲會繼續要求玩家選擇一個數字。
我努力了:
from random import randint
def validateNumber():
valid = False
if 1 <= number_in <=6:
valid = True
return valid
game_1 = randint(1,6)
while True:
try:
number_in = int(input("Enter a number between 1-6: "))
is_valid = validateNumber()
if not is_valid:
number_in = int(input("Enter a number between 1-6: "))
if number_in == game_1:
print(f"The result was {game_1}. Your guess was correct!")
else:
print(f"The result was {game_1}. Your guess was NOT correct. Please try again")
except ValueError:
break
然而,現在它并沒有在猜測正確時結束。有誰知道如何解決這一問題?我嘗試了許多變體,但這是我最接近想要的結果,但仍然不能令人滿意。它似乎也沒有真正處理用戶輸入?
(我對 Python 很陌生,并在一月份開始上大學之前嘗試學習最多:))感謝所有幫助!
uj5u.com熱心網友回復:
您的主要問題是當用戶猜測數字時您應該break跳出while回圈。您還有其他幾個問題:
- 如果用戶輸入了兩次無效的數字,您第二次接受它
- 最好將其作為引數傳遞,而不是依賴于
number_in全域validateNumber - 如果用戶輸入的不是整數,則游戲終止
另請注意,您可以簡化validateNumber如下:
def validateNumber(number):
return 1 <= number <= 6
總的來說,我會將代碼重寫為:
from random import randint
def validateNumber(number):
return 1 <= number <= 6
game_1 = randint(1, 6)
while True:
# play game
is_valid = False
while not is_valid:
# read an input
try:
number_in = int(input("Enter a number between 1-6: "))
is_valid = validateNumber(number_in)
except ValueError:
pass
# check the input
if number_in == game_1:
print(f"The result was {game_1}. Your guess was correct!")
# all done
break
else:
print(f"The result was {game_1}. Your guess was NOT correct. Please try again")
# get another number for them to guess
game_1 = randint(1, 6)
uj5u.com熱心網友回復:
得到正確答案后(number_in == game_1),你應該打破while。
uj5u.com熱心網友回復:
我想,這就是你想要的:
from random import randint
def validateNumber():
valid = False
if 1 <= number_in <= 6:
valid = True
return valid
game_1 = randint(1, 6)
guess_was_correct = False
while not guess_was_correct:
is_valid = False
while not is_valid:
try:
number_in = int(input("Enter a number between 1-6: "))
is_valid = validateNumber()
if not is_valid:
print("You entered a number outside of the 1-6 range. Please enter a number between 1 and 6!")
except ValueError:
print("You did not enter a number. Please enter a number.")
if number_in == game_1:
print(f"The result was {game_1}. Your guess was correct!")
guess_was_correct = True
else:
print(f"The result was {game_1}. Your guess was NOT correct. Please try again")
你需要一個內部回圈來檢查輸入的有效性,例外處理也需要去那里。
檢查猜測的正確性在外回圈中完成。這是一個單獨的事情,只有在我們有一個有效的輸入后才需要完成。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/517381.html
