学习Python艰难的方法 - 练习13学习练习

时间:2015-03-01 03:25:35

标签: python terminal argv raw-input

在学习Python中艰难的方法(练习13)第3研究钻说“将raw_input与argv结合起来制作一个可以从用户那里获得更多输入的脚本。”

我在下面编写了这个脚本,打算让终端提示用户回答三个问题,然后打印出那些集成在其中的答案的短语。但是,当我尝试使用以下命令运行它时,我收到一个错误,即没有足够的值来解压缩:

python ex13.py

我知道我需要更多的变量才能解压缩脚本以便脚本工作,所以当我输入这个然后脚本工作但从不输出变量“first”,“second”或“third”(我不知道)无论如何都想要它):

python ex13.py first second third

我知道如何在不导入参数变量的情况下编写脚本,但我还能如何理解研究练习呢?我知道我不理解正确研究钻孔的提示,但我不确定如何以不同的方式编写脚本,或者即使我朝着正确的方向前进。

有人可以提供一些提示或建议吗?你不必直接给我答案(我喜欢把事情搞清楚),但我暂时不知所措。

我的脚本:

from sys import argv

script, color, number, shape = argv

color = raw_input("What is your favorite color? ")
number = raw_input("What is your favorite number? ")
shape = raw_input("What is your favorite shape? ")

print """
This program is called %r and it will determine your
favorite color, number and shape.
""" % script

print "Based on your answers, your favorite color is:", color
print "Your favorite number is:", number
print "And your favorite shape is a:", shape

2 个答案:

答案 0 :(得分:0)

您希望代码到底做什么?如果你想拥有

    $ python ex13.py
    $ What is your favorite color? <yourColor>
       ..........
    $ Your favorite color is <yourColor>

然后你需要摆脱你从argv设置所有这些值的部分。 argv是在命令行中调用时传递给python的参数列表。您在注释中设置的修复程序设置了script = ['ex13.py']而不是'ex13.py',正是出于这个原因,您将脚本设置为列表而不是字符串。

如果您希望运行代码以便在运行时传递脚本参数,则可以删除调用raw_input的部分(或者您可以将它们保留,但是这会覆盖您传递的值)在命令行中)尝试运行您使用

发布的代码
    $ python ex13.py <yourColor> <yourNumber> <yourShape>

它应该更贴近你想要的东西。

答案 1 :(得分:0)

由于你已经通过删除 outtweets = [ [tweet.text.encode('utf-8')] for tweet in alltweets] #write the csv with open('%s_tweets.csv' % screen_name, 'wt') as f: writer = csv.writer(f) writer.writerow(["text"]) writer.writerows(outtweets) 之前的变量解决了一个问题,现在唯一的问题是你在ex13.py周围得到方括号。

您看到必须在=之前的脚本之后添加另一个没有=的变量并且问题已解决。