2013-07-13 67 views
1

嗨我正在做一個數學程序,與不同的用戶一起工作,然後寫入配置文件(.ini)的分數,但事情是當我試圖做到這一點,我得到一個錯誤說:tkinter數學程序類型錯誤

Exception in Tkinter callback 
Traceback (most recent call last): 
    File "C:\Program Files\Python33\lib\tkinter\__init__.py", line 1475, in __call__ 
    return self.func(*args) 
    File "C:\Users\Public\Documents\Programming\Math-Bot\Math-Bot.py", line 105, in check 
    config[user]['right'] = config[user]['right'] + int(1) 
TypeError: Can't convert 'int' object to str implicitly 

這裏是我用它來決定他們是否得到了答案正確或錯誤代碼:

def check(): 
    if guess.get().lower() == str(no1 + no2): 
     global ri 
     answer.set('Right!') 
     ri = ri + 1 
     right.set(ri) 
     config[user]['right'] = config[user]['right'] + int(1) 
    else: 
     global wa 
     answer.set('Wrong, It Was ' + str(no1 + no2)) 
     wa = wa + 1 
     wrong.set(wa) 
     config[user]['wrong'] = config[user]['right'] + int(1) 

反正是有,我可以解決這個問題?

在此先感謝!

回答

2

如果我理解正確的代碼,您有一個配置值,它是代表一個數字的字符串,是正確的?如果是這樣,你應該先分析它爲int(如iCodez建議),然後將其添加,最後再次格式化爲一個字符串:

config[user]['right'] = str(int(config[user]['right']) + 1) 

這是必要的,因爲Python是一個強類型語言:大部分時間,它不允許在不同類型(在這種情況下,intstr)之間進行操作,要求程序員在應用常規操作員之前將其明確地轉換爲另一種類型。

+0

像上述錯誤的一個停止顯示出來,但配置文件沒有得到更新 – Elxafil

+0

@DanielAlexander這無關你的主問題,並可能是您的代碼的其他部分的問題。我對tkinter不熟悉,這個'config'變量是什麼,並且它上面的設置值會自動更新配置文件?或者那是必須手動完成的事情?尋找這些信息,如果您仍然有疑問,請更新您的問題或詢問另一個問題 – mgibsonbr

2

從我所看到的,config[user]['right']是一個字符串。如果是這樣,你不能加1,因爲1是一個整數,字符串和整數不能加在一起。 +運算符只將兩個相同類型的東西放在一起。所以,如果你想加1 config[user]['right'],你必須首先將其轉換爲整數這樣的:

int(config[user]['right']) + 1 

,或者,如果你想放的性格1上的config[user]['right']結束時,你必須先讓1字符串是這樣的:

config[user]['right'] + '1' 
+0

好了,現在我沒有得到任何錯誤,但ini文件並沒有改變我怎麼想 – Elxafil