【问题标题】:Print lines with numbers infront打印前面有数字的行
【发布时间】:2013-11-24 13:50:35
【问题描述】:

我目前正在尝试打印一个对象列表,其中每个新行前面都有一个数字。就像第一行前面有一个 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

但是我得到了一个无效的语法,不胜感激!

【问题讨论】:

    标签: python for-loop printing


    【解决方案1】:

    以下行中的括号不平衡:

       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)
    

    【讨论】:

    • 看起来他们想要enumerate
    • 因为它是一个对象,我必须使用 str() 函数来打印它,尝试使用你的一种方法它给了我错误 TypeError: sequence item 0: expected str instance , int found --- 我该如何解决这个问题? :
    • @user2982959,您能否显示完整的回溯。 (通过编辑您的问题)。最好显示 List 包含的内容。
    • @user2982959,试试print(n, str(x))
    • @user2982959,为什么不使用print(n, str(x))? (print n, str(x)) 如果你使用 Python 2.x)
    【解决方案2】:

    你错过了一个右括号:

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

    但这仍然不是一个正确的陈述,因为str() 接受一个带有可选编码的字符串参数。

    使用enumerate() 来添加计数会更容易,并将两个参数传递给print()

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-05
      • 1970-01-01
      • 2017-12-04
      相关资源
      最近更新 更多