为了账号安全,请及时绑定邮箱和手机立即绑定

TypeError:在字符串格式化python期间不是所有参数都被转换

TypeError:在字符串格式化python期间不是所有参数都被转换

凤凰求蛊 2019-09-20 16:46:20
该程序应该采用两个名称,如果它们的长度相同,则应检查它们是否是同一个单词。如果它是相同的单词,它将打印“名称相同”。如果它们长度相同但字母不同,则会打印“名称不同但长度相同”。我遇到问题的部分是在底部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)


查看完整回答
反对 回复 2019-09-20
?
倚天杖

TA贡献1828条经验 获得超3个赞

对我来说,当我试图将元组传递给字符串格式方法时,会导致此错误。


我从这个问题/答案中找到了解决方案


从链接复制并粘贴正确的答案(不是我的工作):


>>> thetuple = (1, 2, 3)

>>> print "this is a tuple: %s" % (thetuple,)

this is a tuple: (1, 2, 3)

使用感兴趣的元组作为唯一项目,即(thetuple,)部分,使单个元组成为关键位。


查看完整回答
反对 回复 2019-09-20
  • 3 回答
  • 0 关注
  • 1259 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信