Не знаю, правильно ли я вас понял, но могу предложить некоторые изменения в вашем коде. Первый - если вы хотите посчитать количество нечетных чисел и вернуть True
, если количество шансов равно <= 3
. Вы можете сделать это следующим образом:
>>> def count_odds(lst: list):
... count = 0
... for num in lst:
... count += 1 if num % 2 else 0
... return count <= 3
...
>>> count_odds([1, 3, 5, 6])
True
>>> count_odds([1, 3, 7, 9, 11])
False
Эта функция вернет True
, только если в списке 3, 2, 1 или 0 нечетных чисел, которые вы передали этому методу. С другой стороны, вы можете достичь своей цели, используя break в for l oop. Вот решение:
>>> lst = [1, 3, 5, 7]
>>> count = 0
>>> for num in lst:
... if count > 3:
... break
... count += 1 if num % 2 else 0
>>> print("More than 3") if count > 3 else print("Less than 3")
Less than 3
# Rest of your code.
И еще один способ сделать это:
>>> def count_odds(lst: list):
... result = list(map(lambda x: bool(x % 2), lst))
... return sum(result) <= 3
...
>>> count_odds([1, 3, 7])
True
>>> count_odds([1, 3, 7, 9])
False
Функция map берет каждый элемент списка lst , затем возвращает True
, если элемент нечетный, иначе False. Затем функция суммы суммирует все True
значения из списка result и дает вам ответ.