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

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

任何建议都非常感谢。


凤凰求蛊
浏览 1260回答 3
3回答

慕桂英546537

你正在混合不同的格式功能。旧式%格式化使用%代码进行格式化:'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)

倚天杖

对我来说,当我试图将元组传递给字符串格式方法时,会导致此错误。我从这个问题/答案中找到了解决方案从链接复制并粘贴正确的答案(不是我的工作):>>> thetuple = (1, 2, 3)>>> print "this is a tuple: %s" % (thetuple,)this is a tuple: (1, 2, 3)使用感兴趣的元组作为唯一项目,即(thetuple,)部分,使单个元组成为关键位。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python