Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python猜谜游戏错误?_Python - Fatal编程技术网

Python猜谜游戏错误?

Python猜谜游戏错误?,python,Python,我创造了一个数字猜谜游戏。然而,我不断地遇到一个错误 问题是当我运行它并输入数字时,它最终会说数字高于74(这是一个示例),但低于75。。。如果我设置了一个特定的数字,它可以正常工作,但当我生成一个随机数时,它就不起作用了 import random from tkinter import * def checkInput(): randomNumber = random.randint(1,100) user_guess = int(user_input.get())

我创造了一个数字猜谜游戏。然而,我不断地遇到一个错误

问题是当我运行它并输入数字时,它最终会说数字高于74(这是一个示例),但低于75。。。如果我设置了一个特定的数字,它可以正常工作,但当我生成一个随机数时,它就不起作用了

import random
from tkinter import *

def checkInput():  


   randomNumber = random.randint(1,100)
   user_guess = int(user_input.get())


   if user_guess == randomNumber:
        print("You got it!")
   if user_guess > randomNumber:
        print("Guess lower!")
   if user_guess < randomNumber:
        print("Guess higher!")

root = Tk()

user_input = Entry(root)
user_input.pack()
check_button = Button(root,text="Check",command=checkInput) .pack()
reset_button = Button(root,text="Reset") .pack()

root.mainloop
随机导入
从tkinter进口*
def checkInput():
randomNumber=random.randint(1100)
user\u guess=int(user\u input.get())
如果用户_guess==随机数:
打印(“明白了!”)
如果用户猜测>随机数:
打印(“猜低一点!”)
如果用户猜测<随机数:
打印(“猜得更高!”)
root=Tk()
用户输入=条目(根)
用户_input.pack()
检查按钮=按钮(root,text=“check”,command=checkInput).pack()
重置按钮=按钮(根,text=“重置”).pack()
root.mainloop

问题在于,您正在“checkInput”函数中生成随机数,每次按下“Check”按钮时,该函数都会被调用和更改。您应该做的是在“checkInput”函数之外生成一次随机数,例如,查看以下代码:

import random
from tkinter import *

def checkInput():  

   user_guess = int(user_input.get())

   if user_guess == randomNumber:
        print("You got it!")
   if user_guess > randomNumber:
        print("Guess lower!")
   if user_guess < randomNumber:
        print("Guess higher!")

randomNumber = random.randint(1,100)
root = Tk()

user_input = Entry(root)
user_input.pack()
check_button = Button(root,text="Check",command=checkInput) .pack()
reset_button = Button(root,text="Reset") .pack()

root.mainloop()
随机导入
从tkinter进口*
def checkInput():
user\u guess=int(user\u input.get())
如果用户_guess==随机数:
打印(“明白了!”)
如果用户猜测>随机数:
打印(“猜低一点!”)
如果用户猜测<随机数:
打印(“猜得更高!”)
randomNumber=random.randint(1100)
root=Tk()
用户输入=条目(根)
用户_input.pack()
检查按钮=按钮(root,text=“check”,command=checkInput).pack()
重置按钮=按钮(根,text=“重置”).pack()
root.mainloop()
这基本上是您自己的代码,但有一个小小的更改,即生成随机数的行现在已从“checkInput”函数中移出


祝你好运…

如果你在真实代码中也发布错误日志,那会有帮助,你真的调用了
mainloop
?你每次都会生成一个新的随机数。所以你猜的是一个移动的目标。您应该在开始时生成数字,并将所有后续猜测与该数字进行比较。我认为问题在于,您每次调用
checkInput
时都会生成一个随机数,因此之前的指示不适用……非常感谢,但我还有一个问题。你说每次我按下“检查”按钮都会更改,但我只按了一次。@DatOneNoobCoder:实际上,无论你按了多少次“检查”按钮,在“检查输入”函数中创建随机数都是不正确的。游戏的思想是,代码首先需要创建一个随机数,将其存储在变量中,并保持其值不变,直到程序结束。同时,用户不断猜测,直到他们的猜测与随机数匹配。@DatOneNoobCoder:这里的要点是,如果您在“checkInput()”中创建随机数,则每次调用此函数时都会创建一个新的随机数,也就是每次根据您的代码按下“Check”按钮时。在第一次试验中,您可以幸运地猜到一个与随机数匹配的数字,但是如果需要更多的猜测,代码将不会按预期运行。这就是为什么你看到代码告诉你这个数字大于74小于75!!!让我解释一下代码中发生了什么,以及为什么会出现这种奇怪的行为。@DatOneNoobCoder:当您第一次运行代码时,“randomNumber”没有任何值,因为它尚未创建,因为您尚未按下“Check”按钮!然后输入一些数字,比如说74,然后按下“检查”按钮,这将调用“检查输入”功能。在这个函数中,“randomNumber”是刚刚创建的(这是在你已经猜过了!!!)并且说它是80。现在,代码将80与74进行比较,并告诉您需要猜测一个更大的值。@DatOneNoobCoder:现在您输入75并再次按下“检查”按钮,该按钮将再次调用“检查输入”函数。现在“随机数”改变并被分配到一个新值,比如13,它不再是80!现在代码将13与75进行比较,并告诉您需要输入一个较小的数字!!!你会感到困惑,因为一个整数怎么可能大于74而小于75。