在字符串格式化操作期间并非所有参数都被转换

时间:2017-09-26 03:32:09

标签: python python-2.7

我正在从Zed Shaw的“学习python艰难的方式”练习14,但遇到了这个问题。我甚至尝试过复制粘贴书中的代码,但它总是给我这个错误。这是我的代码:

from sys import argv

script, user_name = argv
prompt = ' >'

print ("Hi %s I'm the %s script.") % (user_name, script)
print "I'd like to ask you some questions"

print ("Do you like me?") % (user_name)
likes = raw_input(prompt)

print ("Where do you live %s") % (user_name)
lives = raw_input(prompt)

print ("What computer do you use %s") % user_name
uses = raw_input(prompt)

print """ 

Alright so I asked you if you liked me and you said %r. You live in %r and you use 
%r computer. Thanks
""" % (likes, lives, uses)

导致此错误的原因是什么?

3 个答案:

答案 0 :(得分:0)

这一行看起来不对:

print ("Do you like me?") % (user_name)

答案 1 :(得分:0)

更改声明

print("Do you like me? %s") % (user_name)

您将变量作为参数,但您没有参数的占位符。这就是为什么它不能在格式化过程中将参数转换为字符串。

答案 2 :(得分:0)

据我所知,问题出在这行

print("Do you like me? %s") % (user_name)

以及您没有将参数传递给脚本的事实,该参数应该绑定到 user_name 变量(这就是为什么未定义的原因)。

像这样调用脚本:

$ python filename.py Muhammad