【问题标题】:Merging strings with "%" in Python [duplicate]在Python中用“%”合并字符串[重复]
【发布时间】:2020-01-22 19:23:55
【问题描述】:

谁能告诉我这段代码有什么问题以及要改变什么?

number = 1
text = "hello"

while number <= 10:
    print("%d, %s" % number, text)
    number = number + 1

错误:

Traceback(最近一次调用最后一次):文件“program.py”,第 5 行,在 print("%d, %s" % number + text) TypeError: not enough arguments for format string

当我这样做时它会起作用:

number = 1
text = "hello"

while number <= 10:
    print("%d" % number)
    number = number + 1

我想我在某处读到使用“%”符号来合并字符串是旧方法,如果可能的话,我希望代码仍然使用它。

【问题讨论】:

  • % (number, text);注意括号。
  • % (number, text) --- 你必须传递一个元组
  • 错误信息和代码不是同一次执行。确保也不要误传。
  • @user2864740 哦,对不起,我想问点别的,我没有正确替换文字,不会再发生了。
  • formatf-strings 现在是生成文本的首选。

标签: python string int


【解决方案1】:

这样做需要在number, text 周围加上括号,因为它需要一个元组。因此,只需将行 print("%d, %s" % number, text) 替换为 print("%d, %s" % (number, text)) 就可以了。

【讨论】:

    【解决方案2】:

    使用此代码

    number = 1
    text = "hello"
    
    while number <= 10:
        print("%d, %s" % (number, text))
        number = number + 1
    

    【讨论】:

      【解决方案3】:

      print("%d, %s" % number, text) 语句中,您需要为字符串格式提供一组参数(在您的情况下为“%d, %s”)。所以,正确的做法是 -

      print("%d, %s" % (number, text))
      

      print number, text  # applicable for python 2.7
      # print (number, text) # Python 3. Python 2.7 prints a tuple
      

      第二个适用,因为您不打印除变量之外的任何内容。 对于第一个,您需要一个元组,以便在字符串格式化期间提供多个参数。因此,如果只想打印数字,您可以只打印print ("%d" %number)print "%d" %number。在这种情况下,元组不是强制性的,但如果您真的想输入更多字符,您可以随时使用print ("%d" %(number,))

      但第一个是旧的做事方式。对于更新和更酷的版本,请使用format(),如下所示 -

      print("{}, {} blah blah blah".format(number, text))
      

      或者,

      print "{}, {} blah blah blah".format(number, text)
      

      欲了解更多信息,请查看 - https://docs.python.org/2/library/string.html#format-string-syntax

      对于您的代码中的其他问题,还请遵循@lenik 给出的答案。

      【讨论】:

        【解决方案4】:

        您的代码绝对违反了 python 代码的所有规则。应该是这样写的:

        text = 'hello'
        for number in range(10) :
            print( number, text )
        
        1. number 没有不需要的初始化
        2. 没有while 循环,这通常会导致错误
        3. 不需要的地方不要格式化

        【讨论】:

          猜你喜欢
          • 2023-03-09
          • 1970-01-01
          • 2019-03-02
          • 2018-04-30
          • 2021-11-05
          • 1970-01-01
          • 2019-11-27
          • 1970-01-01
          • 2013-01-11
          相关资源
          最近更新 更多