【问题标题】:ValueError: need more than 1 value to unpack - Learn Python the Hard Way Ex: 13ValueError: need more than 1 value to unpack - Learn Python the Hard Way Ex: 13
【发布时间】:2015-01-13 11:24:41
【问题描述】:

我已经浏览了已经回答的问题,但我仍然感到困惑。我已经运行了 100 次代码,并且一直收到相同的“ValueError:需要超过 1 个值来解包”错误,所以显然某些东西没有为我计算(看看我在那里做了什么?)。有人可以查看我的代码并向我解释,就像你会像孩子一样向我解释我搞砸了什么吗?

很明显,我完全出于沮丧而偏离了课程中的条款

我写的是:

from sys import argv

script, called, coding, confusing = argv

print "The script is called:", script
print "Your first variable is:", called
print "Your second variable is:", coding
print "Your third variable is:", confusing

我应该在终端中输入什么特殊的东西还是我只是缺少一些代码?

【问题讨论】:

    标签: python


    【解决方案1】:

    argv 是一个包含调用脚本的参数的元组。您需要在调用脚本时传递必要数量的参数:

    python myscript.py param_called param_coding param_confusing
    

    更进一步:

    您正在使用一种称为解包的语法。这意味着左侧不是单个变量,而是变量的“序列”(元组)。在左侧,您也需要一个具有相同数量元素的序列,例如列表或元组。左侧的每个变量都将从右侧分配相应的值。见the tutorial about tuples and sequences(最后一段)。

    关于您的左侧,argv 或更好的sys.argv,这是一个包含脚本名称作为第一个元素和命令行参数的元组。见argv

    全部放在一起:你想把上面例子中的("script.py", "param_called", "param_coding", "param_confusing")中的sys.argv解包成script,called,coding,confusing,所以变量script会影响字符串"script.py"called字符串@987654334 @等

    这种方法的缺点是命令行参数太少或太多都会导致解包失败。

    【讨论】:

    • 好的,冒着听起来很愚蠢的风险,你能再解释一下吗?
    • 是的,我正在收集链接:)
    • @Cilyan:我编辑了一个错字,当我在编辑器中时,还试图澄清另一个让我感到困惑的句子。希望你不要介意!
    • 完全没有,实际上我像往常一样交换了左右;)
    • What You Should SeeLearn Python The hard Way Ex 13 部分还解释了如何进行以及为什么会这样。
    【解决方案2】:

    您的代码是正确的,但按照说明中的说明,您必须在命令提示符中输入 3 个“参数”

    ex: $ python ex13.py 调用编码混乱
    以上将其打印到命令提示符:

    脚本调用:ex13.py 您的第一个变量是:调用 你的第二个变量是:编码 你的第三个变量是:困惑

    【讨论】:

      猜你喜欢
      • 2014-05-26
      • 2016-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-18
      • 1970-01-01
      相关资源
      最近更新 更多