2013-11-24 43 views
0

我目前正在嘗試打印一個對象列表,其中每個新行都會顯示一個數字。像第一行有1個盈方,第二個有2個等。 當我沒有使用每行的數字時,打印功能正常工作。打印此行數字infront

我試着寫它:

n=0 
for x in List: 
    print("\n".join(str(n,x)) 
    n+=1 

在這種情況下,該列表包含了一堆的對象,全部具有4個屬性,self.name,self.randomint,self.randomint2,self.randomint3

但我得到一個無效的語法做這件事,將不勝感激幫助!

回答

2

括號是在下面的行不平衡:

print("\n".join(str(n,x)) 

將其替換爲:

print("\n".join(str(n,x))) 
    #      ^

另一個問題:str只接受一個參數。

>>> str(1, 2) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: str() takes at most 1 argument (2 given) 
>>> str(1) 
'1' 

完整示例代碼:

n=0 
for x in List: 
    print(n, x) 
    n += 1 

使用enumerate

for n, x in enumerate(List, 1): 
    print(n, x) 
+0

看起來他們想要'enumerate' –

+0

@JonClements,你說得對。感謝您的評論。 – falsetru

+0

由於它是一個對象,我必須使用str()函數爲了打印它,試圖使用你的方法之一,它給了我錯誤TypeError:序列項0:期望的str實例,int找到---如何我能解決這個問題嗎? : – user2982959

1

你錯過了一個右括號:

print("\n".join(str(n,x)) 
#    --------^ 

但這不是一個正確的說法,因爲str()需要一個帶可選編碼的字符串參數。

這將是更容易使用enumerate()添加計數,並在兩個參數傳遞給print()

for n, x in enumerate(Line): 
    print(n, x)