程序应该接受两个名字,如果它们的长度相同,它应该检查它们是否是相同的单词。如果是相同的单词,它会打印“名字是相同的”。如果它们的长度相同但字母不同,则会打印“名称不同但长度相同”。我有问题的部分是在最下面的4行。
#!/usr/bin/env python
# Enter your code for "What's In (The Length Of) A Name?" here.
name1 = input("Enter name 1: ")
name2 = input("Enter name 2: ")
len(name1)
len(name2)
if len(name1) == len(name2):
if name1 == name2:
print ("The names are the same")
else:
print ("The names are different, but are the same length")
if len(name1) > len(name2):
print ("'{0}' is longer than '{1}'"% name1, name2)
elif len(name1) < len(name2):
print ("'{0}'is longer than '{1}'"% name2, name1)
当我运行此代码时,它显示:
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
我们非常感谢您的任何建议。
发布于 2013-08-05 16:19:49
你混合了不同的格式函数。
旧式%
格式化使用%
代码进行格式化:
'It will cost $%d dollars.' % 95
新型{}
格式使用{}
代码和.format
方法
'It will cost ${0} dollars.'.format(95)
请注意,对于旧式格式,您必须使用元组指定多个参数:
'%d days and %d nights' % (40, 40)
在您的示例中,由于您使用的是{}
格式说明符,因此请使用.format
"'{0}' is longer than '{1}'".format(name1, name2)
发布于 2013-08-05 16:31:19
错误在您的字符串格式中。
使用'%‘运算符使用传统字符串格式的正确方法是使用printf样式的字符串(Python文档在这里:http://docs.python.org/2/library/string.html#format-string-syntax):
"'%s' is longer than '%s'" % (name1, name2)
但是,'%‘运算符will probably be deprecated in the future。新的PEP 3101工作方式是这样的:
"'{0}' is longer than '{1}'".format(name1, name2)
发布于 2017-10-10 15:43:29
在我的例子中,这是因为我只需要一个%s
,所以我缺少值输入。
https://stackoverflow.com/questions/18053500
复制相似问题