enter code here
my_name="vamsi"
my_age=20
my_height=74
my_weight=180
my_eyes="Blue"
my_teeth="White"
my_hair="Brown"
print "Let's talk about %s" % my_name
print "He's %s inches tall" % my_height # This works fine
print "He's %d pounds heavy"%my_weight
print "He's got %d eyes and %s hair"%(my_eyes,my_hair) #This gives error asking for an integer
在上面的代码片段中,%s接受Integer并打印Integer的确切值。但%d不会对字符串执行此操作,而是说错误number is required ,not str
。
ps:这个问题不重复,它可能是http://learnpythonthehardway.org/book/ex5.html中规定的旧python使用,我在询问问题,发布代码和错误之前通过在线搜索完成了我的工作! / p>
答案 0 :(得分:1)
%s
用于字符串,%d
用于数字
相反,您可以尝试使用.format()
,这是怎么回事:
my_name = 'vamsi'
my_height = 74
my_eyes = 'Blue'
my_hair = 'Brown'
print 'Let\'s talk about {}'.format(my_name)
print 'He\'s {} inches tall'.format(my_height)
print 'He\'s got {eyes} eyes and {hair} hair'.format(eyes=my_eyes, hair=my_hair)
现在您可以交换变量而无需更改占位符。最后一行代码可能看起来有点冗长,但它可以增加可读性。
答案 1 :(得分:0)
使用s
格式化程序时,使用str()
将任何对象隐式转换为字符串。 r
格式化程序存在类似的东西,它会在对象上调用repr()
。
这些规则没有为例如整数定义:d
格式化程序并不意味着调用int()
,因为这并不总是定义(int("hello")
会引发例如ValueError
。另见巴特的评论。
您可以在the documentation(第二张表)中找到。
当例如一个人使用logging
模块时,这也可以很好地工作,你可以简单地告诉格式化字符串使用“%s”,提供你感兴趣的对象用于记录,以及明智的(好的,希望的)会出现;没有异常的可能性,因此您的代码将记录您感兴趣的任何内容而不会崩溃。
人们提到了字符串的format
方法。默认值(字符串中的空{}
)取决于使用的对象:它将使用d
格式表示整数,s
表示字符串,g
表示一个浮点。请参阅为每种类型列出的tables in the documentation。