【问题标题】:Confused about an if statement in Learn Python the Hard Way ex41?对 Learn Python the Hard Way ex41 中的 if 语句感到困惑?
【发布时间】:2013-08-01 09:50:11
【问题描述】:
我一直在学习 Python the Hard Way,但我无法理解示例 41 中这部分代码中发生的情况(完整代码位于 http://learnpythonthehardway.org/book/ex41.html)。
PHRASE_FIRST = False
if len(sys.argv) == 2 and sys.argv[1] == "english":
PHRASE_FIRST = True
我认为这部分与游戏中的切换模式有关,从英语到代码,但我错过了它实际上是如何做到的。我知道 len() 函数测量长度,但我很困惑 sys.argv 在这种情况下是什么,为什么它必须等于 2,以及 1 对 sys.argv[1] 做了什么。
非常感谢您的帮助。
【问题讨论】:
标签:
python
if-statement
argv
sys
【解决方案1】:
len 函数确实测量长度。在这种情况下,它正在测量列表(或通常称为数组)的长度。
sys.argv 表示通过命令行参数传入的字符串列表。这是一些关于它的文档http://docs.python.org/2/library/sys.html
命令行示例:
python learning.py one two
这将总共有三个参数传递到 sys.argv。参数是 learning.py,一和二为字符串
代码,
sys.argv[1]
正在检索存储在 sys.argv 列表的索引 1 中的任何内容。对于上面的示例,这将返回字符串“one”。重要的是要记住 python 列表是零索引的。非空列表的第一个元素总是索引 0。
【解决方案2】:
sys.argv 接受可以像列表一样访问的命令行参数
sys.argv[0] 始终是脚本的名称,其余跟随
if() 语句的前半部分 len(sys.argv) == 2 用于确保您没有得到 IndexoutOfBoundsException,如果返回 false,程序将退出并且不会调用下一个具有错误。
下一条语句检查程序的命令行参数sys.argv[1] == "english" 只是确保输入了正确的命令行参数。如果你这样运行程序
python myScript.py english
那么该语句将返回True
【解决方案3】:
sys.argv 好像是一个数组,if语句是说如果数组的长度是2,并且数组中的第二个元素(索引1)是字符串“english”,那么就做这个变量PHRASE_FIRST 等于 True。