Найти - Пользователи
Полная версия: Вроде бы простенькая задачка, но не знаю как решить
Начало » Центр помощи » Вроде бы простенькая задачка, но не знаю как решить
1 2
nightvi
Написать программу которая в последователньости целых чисел кратных 7 находит их сумму в диапазоне чисел от 6 до 80. числа вводятся с клавиатуры в произвольном порядке от -1000 до 1000, 0 признак окончания ввода
s0rg
def read_sequence(end=0):
    sequence = []
    while True:
        el = raw_input('enter integer or {}: '.format(end))
        try:
            i = int(el)
            if i == end:
                break
            sequence.append(i)
        except ValueError:
            print 'Error: Input must be integer!'
    return sequence
print sum(filter(lambda a: a % 7 == 0,
                 filter(lambda a: (a >= 6) and (a <= 80),
                        read_sequence())))
nightvi
спасибо
Stesh
Мой вариант:
end, _sum = 0, 0 # признак окончания ввода, сумма
dig = raw_input('data input: ').split() # ввод последовательности
for i in dig:   # перебор
    i = int(i)
    if i == end: break
    if 6 <= i <= 80 and i % 7 == 0: _sum += i
print 'data output: ', _sum
doza_and
Stesh некоторые любят обходиться без цикла. Тогда ваш вариант будет:
dig = map(int,raw_input('data input: ').split()) # ввод последовательности
print 'number of cool values: ',len([i for i in dig if 6 <= i <= 80 and i % 7 == 0])
Признак окончания ввода похоже не нужен.
Stesh
doza_and, спасибо, интересная конструкция. Только вместо ф-ции len() у нас тут sum(), опечатка.
Только вот не понимаю, для чего выражение
i for i in dig if 6 <= i <= 80 and i % 7 == 0
берутся в квадратные скобки().
doza_and
Stesh
берутся в квадратные скобки
Чтобы результат вычисления этого выражения стал списком.
reclosedev
Кстати, без промежуточного списка тоже можно:
sum(1 for i in dig if 6 <= i <= 80 and i % 7 == 0)
sergeek
оно вроде генератор таким образом делает, просто скобки автоматически опускает. Через список побыстрее немножко работает.
Isem
sergeek
оно вроде генератор таким образом делает, просто скобки автоматически опускает. Через список побыстрее немножко работает.
Чтобы создать список из генератора, нужно 1) отвести память 2) заполнить ее объектами. Это не то, что немножко быстрее будет, это будет сильно медленнее и ресурсоемко.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB