3 回答

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
您在問(wèn)題標(biāo)題中使用了“循環(huán)”一詞,您是否嘗試過(guò)谷歌搜索并閱讀有關(guān) Python 中可用的循環(huán)結(jié)構(gòu)類型的信息?在您的情況下,您知道您希望循環(huán)運(yùn)行三次,因此您可以使用循環(huán)for。
所以基本結(jié)構(gòu)將如下所示:
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")
現(xiàn)在您需要定義validate_guess:
def validate_guess(guess: str, answer) -> bool:
return guess.isnumeric() and int(guess) == answer

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊
緊湊版本可能是:
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
你需要做的工作:
循環(huán)。當(dāng)需要重復(fù)某些操作所需的次數(shù)時(shí)使用它們
結(jié)合條件。你不能只是將它們列在一個(gè)長(zhǎng)長(zhǎng)的 if-else 梯子中。相反,請(qǐng)使用邏輯來(lái)確定在何處以及如何更有效地使用這些條件。結(jié)果將是更高效、更簡(jiǎn)潔的代碼。

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊
好吧,呃,出于某種原因,我有一個(gè)奇怪的想法,僅僅因?yàn)樗鼈冇糜?python(turtle) 就意味著我不能對(duì)普通 python 使用 while 循環(huán),這里是使用臨時(shí) while 循環(huán)的修訂后的代碼,它不會(huì)改變太多原始代碼
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'))
添加回答
舉報(bào)