【问题标题】: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。

        【讨论】:

          猜你喜欢
          • 2013-08-02
          • 1970-01-01
          • 2015-06-01
          • 2011-01-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-20
          相关资源
          最近更新 更多