我的学校作业是尝试根据以下规则制作一个游戏:创建一个程序,随机生成1 - 50之间的数字。用户必须猜测数字。当他们猜测时,我应该评论以帮助用户猜测。一旦他们得到了数字,我就应该告诉用户猜了多少次,并询问用户是否愿意再玩一次。如果有,创建另一个数字,如果没有,结束程序。
我的问题是,当我再次玩,我的猜测计数没有重置,我的"随机数"没有改变,请包括我的代码变化的解释,因为我在11年级的课程,刚刚开始学习编码,所以我很新的这个,谢谢!有代码:
import random
ran=random.randrange(1,50)
counter=0
guessed=False
def startgame():
answer=input("would you like to play a game? enter 'yes' or 'no'")
if answer == "yes":
while guessed != True:
game()
if answer=="no":
print("thanks for playing")
def game():
global counter
counter=counter+1
x=input("chose a number between 0 and 50")
if int(x)>ran:
print("your value is too high")
elif int(x)<ran<50:
print("your value is too low")
elif int(x)==ran:
guessed=True
answer=input("that is correct! it took you "+ str(counter) +" tries, "+"would you like to play again? enter 'yes' or 'no'")
if answer == "yes":
main()
if answer=="no":
print("thanks for playing")
def main():
startgame()
if __name__ == '__main__':
main()
您已经将ran
声明为全局变量。作为一个全局变量,它将初始化一次。如果你调用一个函数,比如说get_random_no
,它每次都会返回随机数,那就更好了。在该函数中,我们将编写返回随机数的逻辑。
import random
counter=0
guessed=False
def get_random_no():
ran = random.randrange(1,50)
return ran
def startgame():
answer=input("would you like to play a game? enter 'yes' or 'no'")
if answer == "yes":
while guessed != True:
game()
if answer=="no":
print("thanks for playing")
def game():
global counter
counter=counter+1
ran = get_random_no()
x=input("chose a number between 0 and 50")
if int(x)>ran:
print("your value is too high")
elif int(x)<ran<50:
print("your value is too low")
elif int(x)==ran:
guessed=True
answer=input("that is correct! it took you "+ str(counter) +" tries, "+"would you like to play again? enter 'yes' or 'no'")
if answer == "yes":
main()
if answer=="no":
print("thanks for playing")
def main():
startgame()
if __name__ == '__main__':
main()
因为您已经在全局作用域中声明了ran=random.randrange(1,50)
,所以在运行脚本时只调用一次,为了获得所需的行为,您应该在每次调用startgame()
时初始化它,并将其作为参数传递给每个函数。
def main():
ran=random.randrange(1,50)
startgame(ran)
def startgame(ran):
#your function here.
def game(ran):
#Your function here
另一个想法是将ran
声明为全局变量,并在每次调用game()
函数时更改它的值,这将是您可以做的最小更改,以获得所需的行为,但globals
不应该被使用,因为许多全局变量使代码无法管理。