Предмет: Информатика,
автор: donche08
Последовательность чисел генерируется лямбда-функцией:
def generate_number():
return lambda random_seed: (random_seed*693 + 5)%100
number = generate_number()
Член последовательности под номером i равен number(i). Последовательность начинается с первого элемента, признак конца последовательности — значение 0 (не входит в саму последовательность).
Найти количество чисел, кратных 7.
язык питон
Ответы
Автор ответа:
0
def generate_number():
return lambda random_seed: (random_seed*693 + 5)%100
number = generate_number()
def numbers():
i = 0
while True:
elem = number(i)
if elem != 0:
yield elem
i += 1
else:
break
print sum(1 for x in numbers() if x % 7 == 0)
______________________________
numbers - генерирует последовательность из условия
(x for x in iterable if cond(x)) - генерирует последовательность элементов interable, удовлетворяющих условию cond(x) /можно записать и через filter/
return lambda random_seed: (random_seed*693 + 5)%100
number = generate_number()
def numbers():
i = 0
while True:
elem = number(i)
if elem != 0:
yield elem
i += 1
else:
break
print sum(1 for x in numbers() if x % 7 == 0)
______________________________
numbers - генерирует последовательность из условия
(x for x in iterable if cond(x)) - генерирует последовательность элементов interable, удовлетворяющих условию cond(x) /можно записать и через filter/
Автор ответа:
0
Вот тут опечатка: вместо print sum(x for x in numbers() if x % 7 == 0) должно быть print sum(1 for x in numbers() if x % 7 == 0).
Автор ответа:
0
(1 for x in numbers() if x % 7 == 0) работает так: numbers() - это исходная последовательность (вернее, генератор). for x in numbers() - работает так же, как и цикл. if x % 7 == 0 - отбирает все числа, делящиеся на 7. И для каждого числа в итоговый генератор добавляется единица. Получается, что в итоге получится последовательность из 1, в которой каждая единица соответствует числу, делящемуся на 7. Сумма единиц - количество.
Автор ответа:
0
Ответ будет 14.
Автор ответа:
0
В решении вашего соседнего задания (где нужно не количество, а сумма) надо как раз писать print sum(x for x in numbers() if x % 7 == 0), будет сумма чисел. Там ответ 735.
Автор ответа:
0
спасибо
Похожие вопросы
Предмет: Литература,
автор: Аноним
Предмет: Алгебра,
автор: anton4244
Предмет: Английский язык,
автор: afinashuvaili
Предмет: Право,
автор: alyavildanova
Предмет: Алгебра,
автор: Ксеха3