Python“;猜一猜数字;产生意想不到结果的游戏
我最近开始学习python,我的一位程序员朋友给了我一个简单的挑战,让我写一个“猜数字”风格的游戏 因此,我提出了如下建议:Python“;猜一猜数字;产生意想不到结果的游戏,python,Python,我最近开始学习python,我的一位程序员朋友给了我一个简单的挑战,让我写一个“猜数字”风格的游戏 因此,我提出了如下建议: import random print("Hello, welcome to GUESS THE NUMBER game") run = True def again(): global run playagain = str(input("Would you like to play again? Type y/n for yes or no:
import random
print("Hello, welcome to GUESS THE NUMBER game")
run = True
def again():
global run
playagain = str(input("Would you like to play again? Type y/n for yes or no: "))
if playagain == "y":
run = True
elif playagain == "n":
run = False
while run:
guess = int(input("Guess the number between 1 and 10: "))
num1 = random.randint(1, 10)
if guess == num1:
print("CONGRATULATIONS, YOU HAVE GUESSED THE NUMBER, THE ANSWER WAS " + str(num1))
again()
elif guess > num1:
print("Too high, go lower!")
elif guess < num1:
print("Too small, go higher!")
随机导入
打印(“您好,欢迎猜数字游戏”)
运行=真
再次定义()
全球运行
playreach=str(输入(“您想再次播放吗?键入y/n表示是或否:”)
如果再次播放==“y”:
运行=真
elif playreach==“n”:
运行=错误
运行时:
guess=int(输入(“猜测1到10之间的数字:”)
num1=random.randint(1,10)
如果guess==num1:
打印(“祝贺你,你猜到了数字,答案是“+str(num1))
再次()
elif guess>num1:
打印(“太高,降低!”)
elif guess
我的问题是,在用户选择再次播放后,数字有时无法注册并出现异常。例如,你输入5,它说太低,但如果你输入6,它说太高!我似乎不是在处理浮点数,所以它们应该是完整的,有什么想法我哪里出错了吗
提前感谢您,非常高兴能了解更多有关此主题的信息您的问题是每次都在重新生成随机数
num1 = random.randint(1, 10)
相反,可以将猜测和检查逻辑放在它自己的循环中
while True:
guess = int(input("Guess the number between 1 and 10: "))
if guess == num1:
print("CONGRATULATIONS, YOU HAVE GUESSED THE NUMBER, THE ANSWER WAS " + str(num1))
break # leave the while True loop
elif guess > num1:
print("Too high, go lower!")
elif guess < num1:
print("Too small, go higher!")
again()
为True时:
guess=int(输入(“猜测1到10之间的数字:”)
如果guess==num1:
打印(“祝贺你,你猜到了数字,答案是“+str(num1))
中断#离开while True循环
elif guess>num1:
打印(“太高,降低!”)
elif guess
您正在计算循环每次迭代的随机数。因此,每次你猜到随机数都会改变
随机输入
print("Hello, welcome to GUESS THE NUMBER game")
run = True
def again():
global run
playagain = str(input("Would you like to play again? Type y/n for yes or no: "))
if playagain == "y":
run = True
elif playagain == "n":
run = False
num1 = random.randint(1, 10)
while run:
guess = int(input("Guess the number between 1 and 10: "))
if guess == num1:
print("CONGRATULATIONS, YOU HAVE GUESSED THE NUMBER, THE ANSWER WAS " + str(num1))
again()
elif guess > num1:
print("Too high, go lower!")
elif guess < num1:
print("Too small, go higher!")
print(“您好,欢迎猜数字游戏”)
运行=真
再次定义()
全球运行
playreach=str(输入(“您想再次播放吗?键入y/n表示是或否:”)
如果再次播放==“y”:
运行=真
elif playreach==“n”:
运行=错误
num1=random.randint(1,10)
运行时:
guess=int(输入(“猜测1到10之间的数字:”)
如果guess==num1:
打印(“祝贺你,你猜到了数字,答案是“+str(num1))
再次()
elif guess>num1:
打印(“太高,降低!”)
elif guess
您正在循环中生成一个新的随机数,因此每转一圈后,它都会发生变化。在调试代码之前,请尝试生成num1
。。。您可以添加print语句来打印变量值,这样您就可以理解您的代码流程。这不是bug,只是硬模式。一旦有人非常擅长“猜数字”,他们总是能在对数N圈内解决它,突然间,他们平均转N圈(最坏的情况是无限的),这是一个更大的挑战。:)哦,天哪,我觉得自己太蠢了,似乎是个明显的错误。谢谢你指出这一点!这是否意味着在同一个游戏实例中,除非我重新启动,否则num1将始终保持不变?我想我的尝试是在玩家按下“y”再次播放时重新生成一个新的随机数,这就是为什么我把它放在那里,但每次猜测都生成一个新的数字,效果有点太好了lol@Max是的,但是你可以用另一个循环来解决这个问题。外循环对每一个游戏运行一次,内循环(这个答案中的一个)对游戏中的每个猜测运行一次。@abarnert谢谢你的建议,我会给你一个答案try@Max你可能想把它变成一个函数,因此,当你打破循环时,不会有太多的缩进和混乱。