输入正确答案会产生不正确的输出。我该怎么解决这个问题?

2024-10-04 07:34:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我想做一个游戏,用户需要回答数学问题来打败怪物。我还没有为此添加代码,但我目前的问题是,当我输入一个数学问题的正确答案时,它会说它错了。尽管它们都是整数,但仍然不对。你知道吗

我只是编辑了代码以便可以测试。你知道吗

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()

Tags: importselfdefplacerandomroottkprint
1条回答
网友
1楼 · 发布于 2024-10-04 07:34:25

这是一个常见的问题,但其解决方法非常简单。问题出在attack()函数中。就在这里:self.intUserAnswer = self.a_entry.get()。在这一点上,您做出了错误的假设,即您正在从您调用的tkinter.Entry()小部件self.a_entry获取用户输入。实际上,在attack()函数中得到的都是无。你知道吗

您的代码是不完整的,理想情况下您应该提供一个MCVE,这样我们就可以给您一个精确的解决方案,但是没有它,我相信您可以将回调方法与一个事件(最有可能是按按钮)相关联,通过它您可以检索用户在self.a_entry小部件中键入的值,然后您可以将它转发给attack()函数。你知道吗

相关问题 更多 >