Задача на перебор списка
Нужно написать программу, которая запрашивает число, проверяет есть ли оно в списке заданного заранее.
Если да выводит один текст, если нет - другой.
Запрещено использовать оператор in. Нужно использовать цикл for и конструкцию if.
Вот мое решение, но оно не работает, где использовать for не понимаю.
list1 = [1, 5, 3, 2, 6, 8, 9]
a = int(input('Введите число:'))
if a == list1:
print('Число есть в списке')
else:
print('Числа нет в списке')
Ответы (4 шт):
Автор решения: S. Nick
→ Ссылка
Как вариант:
list1 = [1, 5, 3, 2, 6, 8, 9]
a = int(input('Введите число: '))
flag = False
for item in list1:
if a == item:
print(f'Число {a} есть в списке: {list1}')
flag = True
break
if not flag:
print(f'Числа {a} нет в списке: {list1}')
Автор решения: Глеб
→ Ссылка
Решение вообще без in (правда, и без цикла for, но рабочее решение от S. Nick уже есть, так что это просто забавный трюк):
list1 = [1, 5, 3, 2, 6, 8, 9]
number = int(input('Введите число: '))
set1 = set([number])
set2 = set(list1)
x = set1 & set2
if x != set():
print('Есть!')
else:
print('Нет!')
Смысл в том, что мы число и список преобразуем в множества и проверяем их пересечение.
Автор решения: Stanislav Volodarskiy
→ Ссылка
Редкий случай когда полезен for/else:
list1 = [1, 5, 3, 2, 6, 8, 9]
a = int(input('Введите число:'))
for b in list1:
if a == b:
print('Число есть в списке')
break
else:
print('Числа нет в списке')
Автор решения: Danis
→ Ссылка
Можно попробовать использовать any:
if any(a == el for el in list1):
...
else:
...
либо list.count:
if list1.count(a):
...
else:
...
