TypeError: cannot unpack non-iterable int object

word = ord(input('any symbol, but only one:'))
bb = chr(word)
for num, value in word, bb:
    print(str(num) + '==>' + value)

почемуто выводит следущее:

any symbol, but only one:g
Traceback (most recent call last):
  File "D:\allscripts.py\workiii\jarvis.py", line 3, in <module>
    for num, value in word, bb:
TypeError: cannot unpack non-iterable int object

Ответы (1 шт):

Автор решения: gil9red

Выражение for num, value in word, bb: означает, что нужно перебрать коллекцию и каждый ее элемент распаковать по переменным num и value.

В цикле word, bb станет кортежом на два элемента word и bb, т.е. сначала цикл вернет word, потом bb.

А значения num, value заставят его каждый элемент пытаться разложить на два элемента. А т.к. у вас word является числом, то для него такого нельзя сделать (cannot unpack non-iterable int object).

Кст, распаковка выглядит так, для рабочего варианта сделал обе переменных строками по два элемента:

word, bb = '12', '34'
for num, value in word, bb:
    print(num, '=>', value)
# 1 => 2
# 3 => 4

Как мы тут видим, сначала цикл вернул word, после значение "12" распаковал по двум переменным, а следующей итерацией вернул bb и сделал аналогичную распаковку


Мб, вам не цикл нужен был, а что-то вроде такого?

num, value = word, bb
print(str(num) + '==>' + value)
→ Ссылка