该程序应该采用两个名称,如果它们的长度相同,则应检查它们是否是同一个单词。如果它是相同的单词,它将打印“名称相同”。如果它们长度相同但字母不同,则会打印“名称不同但长度相同”。我遇到问题的部分是在底部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任何建议都非常感谢。
3 回答
慕桂英546537
TA贡献1848条经验 获得超10个赞
你正在混合不同的格式功能。
旧式%格式化使用%代码进行格式化:
'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)
倚天杖
TA贡献1828条经验 获得超3个赞
对我来说,当我试图将元组传递给字符串格式方法时,会导致此错误。
我从这个问题/答案中找到了解决方案
从链接复制并粘贴正确的答案(不是我的工作):
>>> thetuple = (1, 2, 3)
>>> print "this is a tuple: %s" % (thetuple,)
this is a tuple: (1, 2, 3)
使用感兴趣的元组作为唯一项目,即(thetuple,)部分,使单个元组成为关键位。
添加回答
举报
0/150
提交
取消