我不明白“ValueError:没有足够的值来解包”

2024-04-26 06:12:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习Python3,我正在做一个允许(在字符串上)交替使用大写和小写字母的练习。不幸的是,我犯了一个错误,我不明白这意味着什么

有人能给我解释一下,当你收到这种类型的信息“ValueError:没有足够的值来解包”时,错误从何而来?提前谢谢你

这是我的密码:

#!/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)

谢谢你,祝你今天愉快


Tags: 字符串in信息密码类型forbin错误
3条回答

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

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

如果还需要索引,请使用以下代码:

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

但是,如果您希望将每个字符与所有字符进行比较或类似的操作,最好使用两个for

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

@miszcz2137的意思是,每次通过for循环,都会得到一个字符:

第一次迭代得到:“E” 第二次迭代得到:“c” 第三次迭代得到:“r” ... 代码“尝试”将这些字符拆分为2个字符,但由于只有一个字符,因此会引发错误

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

相关问题 更多 >