Я не понимаю "ValueError: недостаточно значений для распаковки" - PullRequest
0 голосов
/ 06 марта 2020

Я изучаю Python 3 и выполняю упражнение, которое позволяет (на строке) чередовать прописные и строчные буквы. К сожалению, я получаю сообщение об ошибке и не понимаю, что это значит.

Может кто-нибудь объяснить мне, когда вы получаете сообщение такого типа "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)

Спасибо и хорошего дня!

Ответы [ 3 ]

0 голосов
/ 06 марта 2020

a - это некоторый текст, например "some text". Если вы затем напишите for i, b in a, он выполнит все oop для всех символов в итерируемой строке a, то есть вызовет код внутри вашего for-l oop для каждой буквы "some text". Затем вы пытаетесь присвоить такую ​​букву кортежу из двух переменных (i, b), что невозможно. Это то, что сообщение об ошибке пытается сказать вам.

0 голосов
/ 07 марта 2020

a - это строка. Вы можете использовать его в for циклах, чтобы получить каждый символ:

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

Если вы хотите индекс тоже, используйте этот код:

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

Но если вы хотите иметь каждый char против всех символов для сравнения или что-то подобное, лучше вместо этого использовать два for s:

for i in a:
  for b in a:
    if i == i.upper() and b == b.lower():
        print(i, b)
0 голосов
/ 06 марта 2020

Что означает @ miszcz2137, так это то, что каждый раз, когда вы go проходите через l oop, вы получаете символ:

Первая итерация, которую вы получаете: "E" Вторая итерация, которую вы получили: "c «Третья итерация, которую вы получили:« r »... и ваш код« пытается »разделить эти символы на 2, но, поскольку есть только один символ, возникает ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...