艰苦学习Python-练习13学习练习

艰苦学习Python-练习13学习练习,python,terminal,argv,raw-input,Python,Terminal,Argv,Raw Input,在《艰苦学习Python》(练习13)中,第三次学习演练说“将原始输入与argv结合起来,生成一个脚本,从用户那里获得更多输入。” 我在下面编写了这个脚本,目的是让终端提示用户回答三个问题,然后它将打印出包含这些答案的短语。但是,当我尝试使用以下命令运行时,出现了一个错误,即没有足够的值来解包: python ex13.py 我知道为了让脚本工作,我需要更多的变量来解包,所以当我键入这个时,脚本工作,但从不输出变量“first”、“second”或“third”(我不希望它这样做): 我知道如

在《艰苦学习Python》(练习13)中,第三次学习演练说“将原始输入与argv结合起来,生成一个脚本,从用户那里获得更多输入。”

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

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

你到底想让你的代码做什么?如果你想

    $ python ex13.py
    $ What is your favorite color? <yourColor>
       ..........
    $ Your favorite color is <yourColor>
$python ex13.py
你最喜欢什么颜色?
..........
$你最喜欢的颜色是什么
然后,您需要去掉从argv设置所有这些值的部分。argv是在命令行中调用python时传递给python的参数列表。注释中的修复将script=['ex13.py']而不是'ex13.py',正是因为这个原因,您将script设置为列表而不是字符串

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

    $ python ex13.py <yourColor> <yourNumber> <yourShape>
$python ex13.py

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

由于您已经通过删除
=
之前的变量解决了一个问题,现在唯一的问题是ex13.py周围有方括号


你看,你必须在
=
之前的脚本之后添加另一个变量,这个变量没有
input()
,问题就解决了。

我想出了如何通过删除“、颜色、数字、形状”来让脚本工作。但现在我的脚本名仍然有括号:$python ex13.py您最喜欢的颜色是什么?紫色你最喜欢的号码是什么?你最喜欢什么形状?三角形这个程序叫做['ex13.py'],它将决定你最喜欢的颜色、数字和形状。根据您的回答,您最喜欢的颜色是:紫色您最喜欢的数字是:17,您最喜欢的形状是:三角形$Thank you Galen。我想我试着做一件事,但我的问题是我用了两种不同的方式。任何一段代码(上面的或下面的)都是为了做同样的事情而编写的,我必须删除其中一段才能让它工作。我只是在寻找一种方法,用raw_输入和argv编写一个简单的程序。我仍然不知道我在做什么,所以我只是在做学习练习,希望找到一些方向。
    $ python ex13.py <yourColor> <yourNumber> <yourShape>