您好我正在制作一个与不同用户合作的数学程序,然后将分数写入配置文件(.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)
无论如何我可以解决这个问题吗?
提前致谢!
答案 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是一种强类型语言:大多数时候,它不允许不同类型之间的操作(在这种情况下,int
和str
),要求程序员明确在应用通常的运算符之前将一个转换为另一个。