簡體   English   中英

我需要讓我的評估功能跟蹤用戶獲得正確答案所需的嘗試次數(Python)

[英]I need to make my evaluate function keep track of how many tries it takes the user to get the correct answer(Python)

我知道必須遞歸完成(我認為),但不太確定如何做到。 在def評估中,它必須跟蹤給出正確答案之前調用了幾次評估。 那就是我被困住的地方。

from tkinter import Label, Frame, Entry, Button, LEFT, RIGHT, END
from tkinter.messagebox import showinfo
from random import randrange

# Questions 1 and 2
class Ed(Frame):
    'Simple arithmetic education app'
     def __init__(self,parent=None):
         'constructor'
         Frame.__init__(self, parent)
         self.pack()
         Ed.make_widgets(self)
         Ed.new_problem(self)

     def make_widgets(self):
         'defines Ed widgets'
         self.entry1 = Entry(self,width = 15)
         self.entry1.pack(side = LEFT)
         self.entry2 = Entry(self,width = 15)
         self.entry2.pack(side = LEFT)
         self.button = Button(self, text = "Enter", command = self.evaluate)
         self.button.pack(side = RIGHT)

     def new_problem(self):
         'generates new numbers and decides whether + or -'
         self.entry1.delete(0,END)
         self.entry2.delete(0,END)
         num1 = randrange(0,10)
         num2 = randrange(0,10)
         signNum = randrange(1,3)
         if num1 < num2 and signNum == 2:
             self.new_problem()
         else:
             num1 = str(num1)
             num2 = str(num2)
             if signNum  == 1:
                 sign = "+"
             elif signNum == 2:
                 sign = "-"
             problem = (num1)+sign+(num2)
             self.entry1.insert(0,problem)
     def evaluate(self):
         'handles button "Enter" clicks by comparing answer in entry to correct  result'
         if eval(self.entry1.get()) == int(self.entry2.get()):
             showinfo(title = "Yes!",message = "You got it!")
             self.new_problem()
         else:
             self.entry2.delete(0,END)
     Ed.mainloop()

在init中添加一個實例變量:

def __init__(self,parent=None):
        'constructor'
        Frame.__init__(self, parent)
        self.pack()
        Ed.make_widgets(self)
        Ed.new_problem(self)
        self.triesCount = 0

並在評估中更新它:

def evaluate(self):
        'handles button "Enter" clicks by comparing answer in entry to correct  result'
        if eval(self.entry1.get()) == int(self.entry2.get()):
            showinfo(title = "Yes!",message = "You got it!")
            self.new_problem()
        else:
            self.entry2.delete(0,END)
            self.triesCount += 1

或者,您可以創建一個單獨的Problem類來封裝所有問題操作和變量,並執行類似的操作來處理嘗試次數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM