3 回答

TA貢獻1851條經驗 獲得超3個贊
您在問題標題中使用了“循環”一詞,您是否嘗試過谷歌搜索并閱讀有關 Python 中可用的循環結構類型的信息?在您的情況下,您知道您希望循環運行三次,因此您可以使用循環for。
所以基本結構將如下所示:
def number_guess(answer: int, num_attempts: int = 3) -> None: # The : int and -> None are call type hints or type annotations. I highly highly recommend getting into the habit of using them in Python. It makes your code easier to read and later on, you can use tools like mypy to catch errors before running your code.
for attempt in range(num_attempts): # Loop a defined number of times
guess = input("Guess a number between 1 and 10:")
if validate_guess(guess, answer): # Wrap up your conditions in a function for readability
print("Correct")
break # Exit the loop early because the condition has been met
else:
print("Incorrect")
else: # This part is a weird python thing, it only runs if the loop completes without reaching a break statement. What does it mean if your loop completed without hitting break in this case? It means that the condition never evaluated to true, hence the correct guess wasn't found and the user ran out of tries.
print("Sorry, you're out of tries")
現在您需要定義validate_guess:
def validate_guess(guess: str, answer) -> bool:
return guess.isnumeric() and int(guess) == answer

TA貢獻1784條經驗 獲得超9個贊
緊湊版本可能是:
def numberguess(answerletter):
for attempt in range(3):
user_guess = input('Enter Guess:')
if user_guess.isnumeric() and int(user_guess)==answerletter:
print('Correct')
return True
else:
print(f'incorrect, {2-attempt} attempts left')
print('failed')
return False
你需要做的工作:
循環。當需要重復某些操作所需的次數時使用它們
結合條件。你不能只是將它們列在一個長長的 if-else 梯子中。相反,請使用邏輯來確定在何處以及如何更有效地使用這些條件。結果將是更高效、更簡潔的代碼。

TA貢獻1799條經驗 獲得超9個贊
好吧,呃,出于某種原因,我有一個奇怪的想法,僅僅因為它們用于 python(turtle) 就意味著我不能對普通 python 使用 while 循環,這里是使用臨時 while 循環的修訂后的代碼,它不會改變太多原始代碼
def letterguess(answerletter):
? answerletter=answerletter.lower()
? i=0
? while i<3:
? ? userguess=input('guess a letter A-Z: ')
? ? userguess=userguess.lower()
? ? if userguess.isalpha()==False:
? ? ? print('Invalid')
? ? ? return False
? ? elif userguess==answerletter:
? ? ? print('Correct')
? ? ? i=4
? ? ? print('You guessed correctly')
? ? elif userguess>answerletter:
? ? ? print('guess is too high')
? ? ? i+=1
? ? else:
? ? ? print('guess is too low')
? ? ? i+=1
? else:
? ? print('you failed to guess')
print(letterguess('L'))
添加回答
舉報