输入正确的答案会给出错误的输出。我该如何解决?

Posted

技术标签:

【中文标题】输入正确的答案会给出错误的输出。我该如何解决?【英文标题】:Inputting correct answer gives incorrect output. How do I fix this? 【发布时间】:2018-10-16 08:17:39 【问题描述】:

我正在尝试制作一款用户需要回答数学问题才能击败怪物的游戏。我还没有为此添加代码,但我当前的问题是,当我输入一个数学问题的 正确 答案时,它说它是错误的。即使它们都是整数,它仍然是不正确的。

我刚刚编辑了代码以便对其进行测试。

from tkinter import *
import tkinter as tk
import random   


class Easy(tk.Frame):
     def __init__(self, parent, *args, **kwargs):
        tk.Frame.__init__(self, parent, *args, **kwargs)

        def question(self):
            self.listAnswer = []
            self.listUserAnswer = []
            intOne = random.randrange(1,10)
            intTwo = random.randrange(1,10)
            self.listAnswer.append(intOne + intTwo)
            self.strQuestion = " + ".format(intOne, intTwo)

这里显示输入的答案不正确。

        def attack(self):
            self.intUserAnswer = self.a_entry.get()
            self.listUserAnswer.append(self.intUserAnswer)
            if self.listUserAnswer[self.i] == self.listAnswer[self.i]:
                print("yes")
                self.i += 1
            else:
                print("no")
                print(self.listUserAnswer[self.i])
                print(self.listAnswer[self.i])

        def func():
            attack(self)
            self.a_entry.delete(0,END)

        def game(self):
            self.i = 0
            question(self)
            q_label = Label(self, text=self.strQuestion)
            q_label.place(relx=0.5, rely=0.70, anchor='center')

            self.a_entry = Entry(self, width=5, font=("Helvetica", 20, "bold"))
            self.a_entry.place(relx=0.5, rely=0.80, anchor='center')

            attack_button = Button(self, bg="blue", text="ATTACK!", command=func)
            attack_button.place(relx=0.5, rely=0.90, anchor='center')

        game(self)            

root = tk.Tk()
Easy(root).pack(side="top", fill="both", expand=True)
root.title("Battle Maths")
root.geometry("400x250")
root.resizable(0,0)
root.mainloop()

【问题讨论】:

【参考方案1】:

这是一个常见问题,但其解决方案非常简单。问题出在你的 attack() 函数中。正是在这里:self.intUserAnswer = self.a_entry.get()。此时,您错误地假设您从称为self.a_entrytkinter.Entry() 小部件获取用户输入。实际上你在attack() 函数中得到的都是无。

您的代码不完整,理想情况下您应该提供MCVE,以便我们可以为您提供精确的解决方案,但是如果没有它,我相信您可以将回调方法与事件(最有可能按下按钮)相关联,这要归功于您检索用户在self.a_entry 小部件中键入的值,然后您可以将其转发到您的attack() 函数。

【讨论】:

好的,但是当我运行它时,我在你的代码中看不到任何小部件。 我不明白你为什么声称self.a_entry.get() 正在返回None 刚刚修好了,用int(UserAnswer)

以上是关于输入正确的答案会给出错误的输出。我该如何解决?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的工具输出会覆盖自身,我该如何解决?

为啥使用堆栈的dfs没有给出正确的结果

告诉我此代码将给出错误输出的输入

蟒蛇口口声声说“输入是不确定的。我该如何解决?

(c++) 如何有效地制作升序(dyn.solution)

我该如何解决这个“找不到对象!” CodeIgniter-4 中的错误?