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:

我最近开始学习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: "))
    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你可能想把它变成一个函数,因此,当你打破循环时,不会有太多的缩进和混乱。