
Напишите функцию, которая будет принимать список чисел и проверять, можно ли сложить любые три разные числа из этого списка так, чтобы получить число 7.
Примечания
- В списке всегда будут только числа.
- Естественно, если в списке меньше трех элементов, функция должна вернуть False.
Примеры
lucky_seven([2, 4, 3, 8, 9, 1]) ➞ True lucky_seven([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) ➞ True lucky_seven([0, 0, 0, 2, 3]) ➞ False # Нельзя повторять одно число дважды, т.е. вариант 2 + 2 + 3 = 7 невозможен. lucky_seven([4, 3]) ➞ False # Нужны три разных числа.
Варианты решения
def lucky_seven(lst):
for i in range(len(lst)):
for j in range(i+1, len(lst)):
for k in range(j+1, len(lst)):
if lst[i] + lst[j] + lst[k] == 7:
return True
return False
from itertools import combinations
def lucky_seven(r):
return any(sum(x) == 7 for x in combinations(r, 3))
from itertools import combinations
def lucky_seven(lst):
return any(sum(subset) == 7 for subset in combinations(set(lst), 3))