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

Learn Python The Hard Way - Exercise 13 Study Drills

在 Learn Python The Hard Way(练习 13)中,第 3 次学习练习对 "Combine raw_input with argv to make a script that gets more input from a user."

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

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

您究竟希望您的代码做什么?如果你想要

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

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

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

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

它应该更接近您的要求。

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

周围得到了方括号

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