tkinter数学程序类型错误

时间:2013-07-13 23:49:14

标签: python math tkinter

您好我正在制作一个与不同用户合作的数学程序,然后将分数写入配置文件(.ini)但事情是,当我尝试这样做时,我得到一个错误说:

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 个答案:

答案 0 :(得分:2)

从我所看到的,config[user]['right']是一个字符串。如果是这样,则不能向其添加1,因为1是整数,并且字符串和整数不能一起添加。 +运算符只汇总了两个相同类型的东西。因此,如果要将{1}添加1,则必须先将其转换为如下整数:

config[user]['right']

或者,如果你想将字符1放在int(config[user]['right']) + 1 的末尾,你必须首先使1成为这样的字符串:

config[user]['right']

答案 1 :(得分:2)

如果我正确理解了您的代码,那么您的配置值是一个字符串代表一个数字,这是正确的吗?如果是这样,你应该首先将其解析为int(如iCodez建议的那样),然后添加它,最后再将其格式化为字符串:

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

这是必要的,因为Python是一种强类型语言:大多数时候,它不允许不同类型之间的操作(在这种情况下,intstr),要求程序员明确在应用通常的运算符之前将一个转换为另一个。