我正在學習 python,我正在嘗試創建具有兩個難度級別的猜謎游戲:簡單(10 次嘗試)和困難(5 次嘗試)。我的代碼運行良好,但我需要強制 while 回圈在困難級別嘗試 5 次并且在簡單級別嘗試 10 次后停止詢問猜測。但是,使用我的代碼,我沒有達到我的目標,因為 while 回圈在 n 變數 < 5 或 10 之后不會停止。我怎樣才能使用下面的代碼達到這個目標:
from random import *
def levels():
user_level=input('Type E for easy level and D for difficult level: ')
if user_level=='e':
easy_level()
else:
difficult_level()
number=randint(1,100)
def difficult_level():
n= 0
while n < 5:
user_number=int(input('Guess the number: '))
if user_number > number:
print('Too high')
elif user_number < number:
print('Too low')
elif user_number == number:
print(f'You guessed the number {number}! Congratulations!')
play_again=input('Would you like to play again? type y for yes or n for no: ')
if play_again =='y':
levels()
else:
print('Bye')
break
print('Sorry, no more attempts :(')
def easy_level():
n= 0
while n < 10:
user_number=int(input('Guess the number: '))
if user_number > number:
print('Too high')
elif user_number < number:
print('Too low')
elif user_number == number:
print(f'You guessed the number {number}! Congratulations!')
play_again=input('Would you like to play again? type y for yes or n for no: ')
if play_again =='y':
levels()
else:
print('Bye')
break
print('Sorry, no more attempts :(')
levels()
uj5u.com熱心網友回復:
簡短的回答是您需要n = 1在 while 回圈中添加 a ,如下所示:
def easy_level():
n= 0
while n < 10:
user_number=int(input('Guess the number: '))
if user_number > number:
print('Too high')
elif user_number < number:
print('Too low')
elif user_number == number:
print(f'You guessed the number {number}! Congratulations!')
play_again=input('Would you like to play again? type y for yes or n for no: ')
if play_again =='y':
levels()
else:
print('Bye')
break
n = 1
print('Sorry, no more attempts :(')
長答案是您應該真正考慮使用 for 回圈,這是一個如何做到這一點的示例:
def easy_level():
for i in range(10)
user_number=int(input('Guess the number: '))
if user_number > number:
print('Too high')
elif user_number < number:
print('Too low')
elif user_number == number:
print(f'You guessed the number {number}! Congratulations!')
play_again=input('Would you like to play again? type y for yes or n for no: ')
if play_again =='y':
levels()
else:
print('Bye')
break
print('Sorry, no more attempts :(')
你應該通過洗掉重復的代碼來使你的腳本更干凈,如下所示:
from random import *
def choseLevel():
user_level=input('Type E for easy level and D for difficult level: ')
if user_level=='e':
return 10
else:
return 5
number = randint(1,100)
for i in range(choseLevel):
user_number = int(input('Guess the number: '))
if user_number > number:
print('Too high')
elif user_number < number:
print('Too low')
elif user_number == number:
print(f'You guessed the number {number}! Congratulations!')
play_again = input('Would you like to play again? type y for yes or n for no: ')
if play_again =='y':
levels()
else:
print('Bye')
break
print('Sorry, no more attempts :(')
在這里,我洗掉了您擁有的兩個函式,并制作了它,以便只有一個回圈使代碼更清晰,我還更改了levels()函式名稱以choseLevel()更清楚地了解函式的作用,并且我還在這=使事情看起來更干凈,謝謝。
uj5u.com熱心網友回復:
看起來您忘記n在回圈中增加,所以n總是 = 0。通常您在回圈開始或回圈結束時增加“跟蹤器”變數。在 python 中遞增可以用n = 1.
uj5u.com熱心網友回復:
您需要在每次迭代后增加 n,通過重新分配n(例如n = n 1)或使用如下 =運算子:
from random import *
def levels():
user_level=input('Type E for easy level and D for difficult level: ')
if user_level=='e':
easy_level()
else:
difficult_level()
number=randint(1,100)
def difficult_level():
n= 0
while n < 5:
user_number=int(input('Guess the number: '))
if user_number > number:
print('Too high')
elif user_number < number:
print('Too low')
elif user_number == number:
print(f'You guessed the number {number}! Congratulations!')
play_again=input('Would you like to play again? type y for yes or n for no: ')
if play_again =='y':
levels()
else:
print('Bye')
break
n = 1 # increment n after each iteration
print('Sorry, no more attempts :(')
def easy_level():
n= 0
while n < 10:
user_number=int(input('Guess the number: '))
if user_number > number:
print('Too high')
elif user_number < number:
print('Too low')
elif user_number == number:
print(f'You guessed the number {number}! Congratulations!')
play_again=input('Would you like to play again? type y for yes or n for no: ')
if play_again =='y':
levels()
else:
print('Bye')
break
n = 1 # increment n after each iteration
print('Sorry, no more attempts :(')
levels()
uj5u.com熱心網友回復:
可能更容易使用for這樣的回圈:
def levels():
easy_turns = 5
hard_turns = 10
user_level=input('Type E for easy level and D for difficult level: ')
if user_level=='e':
play(easy_turns)
else:
play(hard_turns)
def play(turns):
for _ in range(turns):
user_number=int(input('Guess the number: '))
if user_number > number:
print('Too high')
elif user_number < number:
print('Too low')
elif user_number == number:
print(f'You guessed the number {number}! Congratulations!')
play_again=input('Would you like to play again? type y for yes or n for no: ')
if play_again =='y':
levels()
else:
print('Bye')
break
print('Sorry, no more attempts :(')
一個好的經驗法則是,如果您使用相同的代碼兩次將其放入一個函式中。隨著時間的推移,它肯定會失去同步,然后你會想知道為什么“簡單”有效,而“困難”卻做了一些奇怪的事情(或一些變體)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/473782.html
