2016-03-01 103 views
2

我正在开发一个货币系统的Python Twitch IRC Bot。每分钟,我为用户的“平衡”添加一点。但是,每当我运行脚本时,我在控制台中都会收到一个TypeError。它说TypeError: 'int' object is not iterable,我不知道如何解决它,我不知道问题是什么,因为它在早期工作得很好。这里是我的代码:Python - 列表迭代错误

userlist = [open('userlist.txt').read()] 
balances = [open('balances.txt').read()] 

def loadusers(): 
    global userlist 
    userlist = [map(str, userlist[0].split(", "))] 
def loadbalances(): 
    global balances 
    balances = [map(int, balances[0].split(", "))] 
def savelist(path, listname): 
    with open(path, 'w') as text_file: 
     text_file.write(re.sub('[\'\[\]]', '', str(listname))) 

loadusers() 
loadbalances() 

def givePoints(): 
    num = 0 
    for users in balances: 
     balances[num] += 1 
     num += 1 
    threading.Timer(60.0, givePoints).start() 

我得到的错误信息为balances[num] += 1

在此先感谢您的帮助!

+3

我不明白你会如何得到你描述的错误。我期望一些其他问题(比如'IndexError'),因为你正在制作一堆非常奇怪的列表。不要随便在任何东西上随便方括号括起来!无论如何,你确定你得到了你所描述的TypeError吗? – Blckknght

+0

map()返回一个地图对象,所以'balances'被分配一个包含一个地图对象的列表(你不能加1)。将它改为'balances = list(map(int,balances [0] .split(“,”))),它似乎工作。至少'balances [num]'将是一个整数,就像你期待的那样(我认为)。 – jfsturtz

+1

@jfsturtz在python 2中,'map'返回一个列表。 – tdelaney

回答

0

解决方案:我从我的[map(str, userlist[0].split(", "))]声明中删除了括号,现在它完美地工作!感谢大家的提示:)