← Все вопросы
TypeError: argument of type 'int' is not iterable — при проверке in
8
x = 12345
if 3 in x:
print("есть тройка")
Падает TypeError: argument of type 'int' is not iterable. Хочу проверить, есть ли цифра 3 в числе. Что не так?
2 ответа
17
✓ Принятый ответ — помог автору
Оператор in умеет искать только внутри «перебираемых» (iterable) объектов: строк, списков, множеств, словарей и т.д. По числу пройтись циклом нельзя — оно не контейнер, поэтому 3 in 12345 бессмысленно, и Python об этом честно сообщает.
Чтобы искать цифру, переведите число в строку:
x = 12345
if "3" in str(x): # обратите внимание: ищем СТРОКУ "3"
print("есть тройка")
Либо разбирайте по цифрам арифметикой через % 10 и // 10, если строки использовать нельзя (например, на ЕГЭ просят «без строк»).
6
in работает по строкам/спискам, а не по числам. "3" in str(x).
Ваш ответ
Войдите, чтобы ответить на вопрос.