我目前正在尝试打印一个对象列表,其中每个新行都在其前面有一个数字。就像第一行的前面有1个,第二行有2个等等。 当我不使用每行的数字时,打印功能正常工作。
我试着写下来:
n=0
for x in List:
print("\n".join(str(n,x))
n+=1
本例中的List包含一堆对象,都有4个属性,self.name,self.randomint,self.randomint2,self.randomint3
但我这样做的语法无效,谢谢你的帮助!
答案 0 :(得分: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)
答案 1 :(得分:1)
你错过了一个右括号:
print("\n".join(str(n,x))
# --------^
但这仍然不是正确的陈述,因为str()
采用带有可选编码的一个字符串参数。
使用enumerate()
添加计数会更容易,并将两个参数传递给print()
:
for n, x in enumerate(Line):
print(n, x)