在Python中合并带“%”的字符串

2024-06-17 08:02:10 发布

您现在位置:Python中文网/ 问答频道 /正文

有人能告诉我这段代码出了什么问题以及要修改什么吗?你知道吗

number = 1
text = "hello"

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

错误:

Traceback (most recent call last): File "program.py", line 5, in 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

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


Tags: 代码textpynumbermosthello错误call
3条回答

这样做需要用括号括住number, text,因为它需要一个元组。所以只要把print("%d, %s" % number, text)行替换成print("%d, %s" % (number, text))就行了。你知道吗

使用此代码

number = 1
text = "hello"

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

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给出的答案。你知道吗

相关问题 更多 >