【问题标题】:I dont't understand "ValueError: not enough values to unpack"我不明白“ValueError:没有足够的值来解包”
【发布时间】:2020-03-07 23:26:52
【问题描述】:

我正在学习 Python 3,并且正在进行一项允许(在字符串上)交替大写和小写字母的练习。不幸的是,我收到一个错误,我不明白它的含义。

有人可以向我解释一下,当您收到这种类型的消息“ValueError: not enough values to unpack”时,错误是从哪里来的?提前谢谢!

这是我的代码:

#!/bin/python3.6
#Une lettre sur deux en majuscule, les autres en minuscules !
#Yeah ! Tu PeUx Le FaIrE !!! \o/

a = input("Ecris ce que tu veux : ")


for i, b in a:
    if i == i.upper and b == b.lower:
        print(a)

这是错误信息:

    for i, b in a:
ValueError: not enough values to unpack (expected 2, got 1)

谢谢你,祝你有美好的一天!

【问题讨论】:

  • 我很确定你应该用英语发表你的问题。
  • 你迭代所以每次你有一个字符。然后您尝试将其拆分为两个值。
  • 非常感谢您的回答!对不起英文文本,我看到在stackoverflow上有一个法语社区,但我的个人资料不能设置为连接到它^^。对这些数字感到抱歉,我不知道,我想我会帮忙把它们放在 ^^' 所以信息改变了! :D miszcz2137 对不起,我不明白你的回答:/

标签: python python-3.x valueerror


【解决方案1】:

@miszcz2137 的意思是每次执行 for 循环时都会得到一个字符:

你得到的第一次迭代:“E” 你得到的第二次迭代:“c” 你得到的第三次迭代:“r” ... 并且您编写代码“尝试”将这些字符分成 2 个字符,但由于只有一个字符,因此会引发错误。

【讨论】:

  • 感谢您的回复!我还在练习中,但多亏了你,我才能理解一些事情!
【解决方案2】:

a 是一些文本,例如"some text"。如果您随后编写for i, b in a,它将对可迭代字符串a 中的所有字符执行循环,即它将为"some text" 的每个字母调用for 循环内的代码。然后,您尝试将这样的字母分配给两个变量的元组(i, b),这是不可能的。这就是错误消息试图告诉您的内容。

【讨论】:

    【解决方案3】:

    a 是一个字符串。您可以在for 循环中使用它来获取每个字符:

    for b in a:
      print(b)  # b is each char every time
    

    如果您也想要索引,请使用以下代码:

    for i, b in enumerate(a):
      print(i, b)
    

    但是,如果您希望将每个字符与所有字符进行比较或其他类似的东西,最好使用两个 fors 代替:

    for i in a:
      for b in a:
        if i == i.upper() and b == b.lower():
            print(i, b)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-26
      • 2017-12-29
      • 1970-01-01
      • 2023-02-23
      • 2023-03-20
      • 2016-04-10
      • 2016-07-05
      • 2017-09-14
      相关资源
      最近更新 更多