2016-08-24 40 views
0

我正在學習python並試圖製作一個與GUI連接的猜測數字程序。 但是,有錯誤,我不知道如何解決,所以請幫助我。TypeError:無法訂購的類型:int()> Guessing_game()

我的代碼是

from tkinter import* 
import random 

class Application(Frame): 

    def __init__(self, master): 
     super(Application, self).__init__(master) 
     self.grid() 
     self.widgets() 
     self.answer = Guessing_game(starting_number = 0, 
            ending_number = 100) 

    def widgets(self): 

     Label(self, 
       text = "Hello welcome to new_version of the Guess My Number!" 
      ).grid(row = 0, column = 0, sticky = W) 

     Label(self, 
       text = "Guess the number(0-100):" 
      ).grid(row = 1, column = 0, sticky = W) 

     self.user_answer = Entry(self) 
     self.user_answer.grid(row = 1, column = 1, sticky = W) 

     Button(self, 
       text = "submit", 
       command = self.submit 
       ).grid(row = 3, column = 0, sticky = W) 

     self.txt = Text(self, width = 50, height = 20, wrap = WORD) 
     self.txt.grid(row = 4, column = 0, columnspan = 4, sticky = W) 

    def submit(self): 

     user_answer = self.user_answer.get()  

     if user_answer != None: 
      int(user_answer) 
     if int(user_answer) not in range(101): 
      self.txt.delete(0.0, END) 
      self.txt.insert(0.0, "Your guess is not in proper range") 
     elif int(user_answer) > self.answer: 
      self.txt.delete(0.0, END) 
      self.txt.insert(0.0, "Your guess is higher than the answer") 
     elif int(user_answer) < self.answer: 
      self.txt.delete(0.0, END) 
      self.txt.insert(0.0, "Your guess is lower than the answer") 
     else: 
      self.txt.delete(0.0, END) 
      self.txt.insert(0.0, "Your guess is right! the number is", self.answer) 

class Guessing_game(object): 
    def __init__(self, starting_number, ending_number): 
     self.answer = random.randint(starting_number,ending_number) 

    def __str__(self): 
     return self.answer 
#main 
root = Tk() 
app = Application(root) 
root.mainloop() 

,誤差

Exception in Tkinter callback Traceback (most recent call last):
File "C:\Python31\lib\tkinter__init__.py", line 1399, in call return self.func(*args) File "D:/Python/practice/Guess_My_Number(GUI).py", line 43, in submit elif int(user_answer) > self.answer: TypeError: unorderable types: int() > Guessing_game()

我如何猜謎遊戲()對象轉換成int()函數,這樣我就可以比較 對象和INT ?

回答

1

它告訴你到底是什麼錯誤,你是比較對象與整數。相反,你應該引用變量對象

if int(user_answer) > self.answer.answer: 
    ... 

內可能要考慮固定爲這個命名。或者考慮你是否需要這個課程。另外你__str__方法不正確,則返回值必須是一個字符串,而你試圖返回一個整數(你可以看到這一點,如果你嘗試print(Guessing_game(0, 100))

下也並沒有完全做你認爲

if user_answer != None: 
    int(user_answer) 

user_answer將永遠是一個字符串,因爲你是從輸入控件所獲得的價值。

相反,你可能想

# Check if the string is a number 
if not user_answer.isdigit(): 
    # Some error message 
    return # prevent trying anything else 

您還需要重新分配的int(user_answer)的結果,因爲它不會改變你的變量它本質上什麼也不做(除非遇到錯誤)

user_answer = int(user_answer) 
+0

謝謝史蒂芬。感謝您的支持,我可以解決這個問題。 –

相關問題