← Все вопросы

TypeError: argument of type 'int' is not iterable — при проверке in

Задан 9 месяцев назад389 просмотров2 ответа
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).

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект