Форум сайта python.su
Прохожу онлайн курс для новичков. Обычно нахожу решение сам, но тут застрял конкретно. Бьюсь уже третий день.
Есть список трёхзначных чисел
numbers = [числа, числа, много_чисел, 237, числа, ещё_больше_чисел]
numbers = num for num in numbers if num % 2 == 0 print("Even numbers in the list: ", numbers)
range()
Отредактировано GLADIATORD (Апрель 23, 2021 10:19:33)
Офлайн
>>> lst = [1, 2, 3, 4, 237, 5, 6, 7, 8] >>> >>> out = [i for i in lst[:lst.index(237)] if i % 2 == 0] >>> out [2, 4] >>>
>>> import itertools >>> >>> lst = [1, 2, 3, 4, 237, 5, 6, 7, 8] >>> >>> out = [i for i in itertools.takewhile(lambda i: i != 237, lst) if i % 2 == 0] >>> out [2, 4] >>>
Отредактировано py.user.next (Апрель 23, 2021 10:29:18)
Офлайн
Отредактировано AD0DE412 (Апрель 23, 2021 10:30:56)
Офлайн
Первый вариант помог. Второй пока неполучается применить
Спасибо большое! Буду пытаться разобраться теперь, как это вообще всё вместе работает))
Офлайн
Офигеть! Кое-как нашёл правильное решение:
numbers = [числа] for i in numbers: if i % 2 == 0: print(i) if i == 237: break
for number in numbers: if number == 237: break if number % 2 == 1: continue print(number)
Отредактировано GLADIATORD (Май 1, 2021 08:11:33)
Офлайн
GLADIATORDНе, он подставил кроме 237 ещё другое число. Например, число 238. И твой код его вывел. А ведь это противоречит условию. Маркер конца нельзя выводить.
Т.е. я вывел результат неправильным способом? Смешно. Результат то у меня был тот же
Офлайн
Можно попробовать реализовать с циклом while
https://pythonclass.ru/python/cikl-while-v-python/#continue
Офлайн
py.user.next
Не, он подставил кроме 237 ещё другое число.
numbers = [ 951, 402, 984, 651, 360, 69, 408, 319, 601, 485, 980, 507, 725, 547, 544, 615, 83, 165, 141, 501, 263, 617, 865, 575, 219, 390, 984, 592, 236, 105, 942, 941, 386, 462, 47, 418, 907, 344, 236, 375, 823, 566, 597, 978, 328, 615, 953, 345, 399, 162, 758, 219, 918, 237, 412, 566, 826, 248, 866, 950, 626, 949, 687, 217, 815, 67, 104, 58, 512, 24, 892, 894, 767, 553, 81, 379, 843, 831, 445, 742, 717, 958, 609, 842, 451, 688, 753, 854, 685, 93, 857, 440, 380, 126, 721, 328, 753, 470, 743, 527 ] for i in numbers: if i % 2 == 0: print(i) if i == 237: break
numbers = [ 951, 402, 984, 651, 360, 69, 408, 319, 601, 485, 980, 507, 725, 547, 544, 615, 83, 165, 141, 501, 263, 617, 865, 575, 219, 390, 984, 592, 236, 105, 942, 941, 386, 462, 47, 418, 907, 344, 236, 375, 823, 566, 597, 978, 328, 615, 953, 345, 399, 162, 758, 219, 918, 237, 412, 566, 826, 248, 866, 950, 626, 949, 687, 217, 815, 67, 104, 58, 512, 24, 892, 894, 767, 553, 81, 379, 843, 831, 445, 742, 717, 958, 609, 842, 451, 688, 753, 854, 685, 93, 857, 440, 380, 126, 721, 328, 753, 470, 743, 527 ] for number in numbers: if number == 237: break if number % 2 == 1: continue print(number)
Офлайн
py.user.next
Не, он подставил кроме 237 ещё другое число. Например, число 238. И твой код его вывел. А ведь это противоречит условию. Маркер конца нельзя выводить.
numbers = [1, 240, 3, 8, 238, 237, 242, 10, 11, 12, 244] for number in numbers: if number % 2 == 0: print(number) if number == 237: break
numbers = [1, 240, 3, 8, 238, 237, 242, 10, 11, 12, 244] for number2 in numbers: if number2 == 237: break if number2 % 2 == 1: continue print(number2)
Отредактировано Ocean (Май 6, 2021 15:53:54)
Офлайн
В if number2 == 237 вместо 237 поставь 238 и будет чудо.
Офлайн