我有一些代码,可以从用户那里读取两个字符串:
name1 = input("Enter name 1: ")
name2 = input("Enter name 2: ")
以后,我想将这些字符串格式化成一个更长的字符串以供打印:
if len(name1) > len(name2):
print ("'{0}' is longer than '{1}'"% name1, name2)
但是我得到了一个看起来像这样的错误信息:
Traceback (most recent call last):
File "program.py", line 13, in <module>
print ("'{0}' is longer than '{1}'"% name1, name2)
TypeError: not all arguments converted during string formatting
代码有什么问题?我应该如何编写这一行,以便正确格式化字符串?
有关此类字符串格式化的最常用方法的深入比较,请参见String formatting: % vs. .format vs. f-string literal,有关此类字符串构建的一般操作指南,请参见How do I put a variable’s value inside a string (interpolate it into the string)?。请参见Printing tuple with string formatting in Python,其中介绍了另一个常见的错误原因。
f"'It will cost ${your_variable} dollars."
的意思是:在字符串前缀加上字母"f",然后使用花括号和变量名来插入变量值,最终得到一个包含变量值的字符串。例如,如果变量your_variable
的值为100,那么这个代码将会输出字符串:"It will cost 100 dollars." - JinSnowf"'It will cost {your_variable=} dollars."
。 - Sam Daniel