2016-03-01 113 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(", "))]聲明中刪除了括號,現在它完美地工作!感謝大家的提示:)