学习 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()
的变量,问题就解决了。
在 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()
的变量,问题就解决了。