Напишите функцию, которая будет принимать список чисел и проверять, можно ли сложить любые три разные числа из этого списка так, чтобы получить число 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))