4 回答

TA貢獻1821條經驗 獲得超5個贊
有許多不同的方法可以解決這樣的問題,您必須考慮它們并決定哪種方法最適合您的編程風格。
使 guess_left 成為全局變量: 從純技術的角度來看,您可以創建guess_left
一個全局變量以便在rand_guess
函數外部訪問它,
返回剩余的猜測數量 然而,通常最好不要創建太多全局變量,因為它會導致代碼難以閱讀(并且經常有錯誤)。您是否考慮過返回rand_guess
剩余的猜測數量。
將游戲結束狀態打印消息移動到 rand_guess 函數中:您還可以將游戲結束時的所有打印語句移動到函數內部 rand_guess
,即您當前返回 true 或 false 的位置。
在考慮選擇哪種解決方案時,請考慮以下事項:一個月后我是否仍能理解這段代碼的作用?其他人能理解這段代碼的作用嗎?

TA貢獻2036條經驗 獲得超8個贊
這是一個從一個函數返回多個結果的例子。
if flag == 1:
return [True, guess_left]
else:
return [False, guess_left]
if __name__ == '__main__':
result = rand_guess()
if result[0] is True:
guess_left = result[1]
print(f"Congrats. You won with {guess_left} tries left.")
else:
print("Sorry, you lost the game!")

TA貢獻1735條經驗 獲得超5個贊
好吧,定義一個全局變量是可能的,但通常被認為是糟糕的風格,因為隨著項目的增長,它們往往很難跟蹤。范圍界定是一件美麗的事情!你為什么不嘗試這樣做,返回剩下的猜測次數:
def rand_guess():
random_number = generator()
for i in range(25, 0, -1):
guess = int(input("Please enter your lucky number: "))
if guess == random_number:
return i-1
return 0
if __name__ == '__main__':
guesses_left = rand_guess()
if guesses_left:
print(f"Congrats! You won with {guesses_left} guesses left.")
else:
print("Sorry, you lost the game!")

TA貢獻1906條經驗 獲得超10個贊
您可以初始化guess_left為全局變量,并在函數內部不斷對其進行更新。
像這樣:
from random import randint
guess_left = 25
def generator():
return randint(1, 1024)
def rand_guess():
random_number = generator()
flag = 0
global guess_left
while guess_left > 0:
guess = int(input("Please enter your lucky number: "))
if guess == random_number:
flag = 1
break
elif guess < random_number:
guess_left -= 1
print(f"Wrong Guess. Your number should be higher! You have {guess_left} tries left.")
else:
guess_left -= 1
print(f"Wrong Guess. Your number should be lower! You have {guess_left} tries left.")
if flag == 1:
return True
else:
return False
if __name__ == '__main__':
if rand_guess() is True:
print(f"Congrats. You won with str(guess_left) tries left.")
else:
print("Sorry, you lost the game!")
添加回答
舉報