Предмет: Информатика, автор: donche08

Последовательность чисел генерируется лямбда-функцией:
def generate_number():
return lambda random_seed: (random_seed*693 + 5)%100
number = generate_number()
Член последовательности под номером i равен number(i). Последовательность начинается с первого элемента, признак конца последовательности — значение 0 (не входит в саму последовательность).
Найти количество чисел, кратных 7.
язык питон

Ответы

Автор ответа: nelle987
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/
Автор ответа: nelle987
0
Вот тут опечатка: вместо print sum(x for x in numbers() if x % 7 == 0) должно быть print sum(1 for x in numbers() if x % 7 == 0).
Автор ответа: nelle987
0
(1 for x in numbers() if x % 7 == 0) работает так: numbers() - это исходная последовательность (вернее, генератор). for x in numbers() - работает так же, как и цикл. if x % 7 == 0 - отбирает все числа, делящиеся на 7. И для каждого числа в итоговый генератор добавляется единица. Получается, что в итоге получится последовательность из 1, в которой каждая единица соответствует числу, делящемуся на 7. Сумма единиц - количество.
Автор ответа: nelle987
0
Ответ будет 14.
Автор ответа: nelle987
0
В решении вашего соседнего задания (где нужно не количество, а сумма) надо как раз писать print sum(x for x in numbers() if x % 7 == 0), будет сумма чисел. Там ответ 735.
Автор ответа: donche08
0
спасибо
Похожие вопросы
Предмет: Алгебра, автор: Ксеха3