2015-08-18 64 views
-2
factor = int(input("Which table would you like: ")) 
timestable = ([0,0]) 
for count in range(1,13): 
    timestable.append([0,0]) 
    result = factor * count 
    timestable[count][0] = count 
    timestable [count][1] = result 
for row in timestable: 
    print(row) 

這是一個程序,它允許用戶輸入一個時間表並打印出1 *號碼爲12 *的數字。但每當我去運行代碼,我得到這個錯誤信息:錯誤消息TypeError:'int'對象不支持項目分配

timestable[count][0] = count  
TypeError: 'int' object does not support item assignment 

有誰知道我必須在我的代碼改變?

+0

您初始化timestable是一個2元素的列表(括號沒有做任何事情在這裏),然後在循環的每一步中追加2元素列表。因此,timestable變成類似'[0,0,[0,0],[0,0],[0,0],...]'。你要麼尋找'extend',要麼想要將timestable初始化爲'timestable ='[[0,0]]'。 – Evert

回答

0

正如評論中指出的那樣,問題是行timestable = ([0,0])初始化timestable只是[0, 0]。因此,在您的第一個append,timestable看起來像這樣:[0, 0, [0, 0]]而不是[[0, 0], [0, 0]],並且timestable[count]後面的值不是新添加的[0,0],而是從初始化開始的第二個0

也許你想創建一個擁有列表的單元組,但是你必須使用([0,0],)(注意尾隨逗號),但是這對你也不會有任何好處,因爲你不能追加元組。相反,您應該將其初始化爲嵌套列表。此外,您可以通過不首先附加零並重寫這些零來縮短循環體,而是直接附加正確的值。

timestable = [[0,0]] 
for count in range(1, 13): 
    timestable.append([count, factor * count]) 

但是,您根本不需要單獨的初始化和循環;你的只是一個單一的列表理解創建timestable(注意這裏,從0range開始):

timestable = [[count, factor * count] for count in range(0, 13)] 
相關問題