2013-02-08 31 views
0

我知道它必須以遞歸方式(我認爲)完成,但不太確定。 在def中評估它必須記錄在給出正確答案之前調用評估的次數。那就是我被卡住的地方。我需要讓我的評估函數跟蹤用戶獲得正確答案所需的嘗試次數(Python)

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

IDK如何修復格式。我現在感到很蠢。 – user2038409

回答

1

添加一個實例變量初始化:

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 

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

相關問題