Найти - Пользователи
Полная версия: Задача: считать числа пока сумма не будет равна нулю.
Начало » Центр помощи » Задача: считать числа пока сумма не будет равна нулю.
1 2
Stroncy
Условия:
Напишите программу, которая считывает с консоли числа (по одному в строке) до тех пор, пока сумма введённых чисел не будет равна 0 и после этого выводит сумму квадратов всех считанных чисел.
Гарантируется, что в какой-то момент сумма введённых чисел окажется равной 0, после этого считывание продолжать не нужно.
В примере мы считываем числа 1, -3, 5, -6, -10, 13; в этот момент замечаем, что сумма этих чисел равна нулю и выводим сумму их квадратов, не обращая внимания на то, что остались ещё не прочитанные значения.
Paranoia_Agent
str="1,-3,5,-6,-10,13,14,15,-8"
array=list(map(int,str.split(",")))
for index in range(1,len(array)):
    if sum(array[:index])==0:
        print(sum([sq**2 for sq in array[:index]]))
        break
else:
    print("А вот и не вышло нолика в сумме")
Stroncy
Paranoia_Agent, а как с вводом сделать.. чтоб вводить любые числа?
Paranoia_Agent
Stroncy, с помощью input?

Ввод построчно, через enter:
array=[int(input()) for x in range(10)]
где 10 - кол-во элементов.

Ввод через запятую, либо любой другой разделитель:
array=list(map(int,input().split(",")))
где в кавычках указан разделитель.
Stroncy
Paranoia_Agent, они не просто должны вводиться(input) но и каждое число с новой строки..
блин.. наверно надо input поместить в цикл while.. Вот так должен быть ввод и вывод(без букв):
http://i68.fastpic.ru/big/2014/1121/df/fa68ab90b76b7e0fa7041392714d01df.jpg
Paranoia_Agent
Stroncy
Первый вариант из сообщения выше, я не хотел плодить много сообщений и редактировал то.
Stroncy
Если так, то выдаёт ошибку.
array=[int(input()) for x in range(10)]
for index in range(1,len(array)):
    if sum(array[:index])==0:
        print(sum([sq**2 for sq in array[:index]]))
        break
else:
    print("А вот и не вышло нолика в сумме")
тут ввод построчно, а нужно каждое число вводить с новой строки ((
Paranoia_Agent
Где ошибка?:

Your text to link here…

Для большого потока элементов:
summa=0
summa_sq=0
while True:
    inp=int(input())
    summa=summa+inp
    summa_sq=summa_sq+inp**2
    if summa==0:
        break
print(summa_sq)
Stroncy
Paranoia_Agent, СПАСИБО!!! Всё получилось..

hottabov
А можно сделать ту же задачу с помощью списков:
a = [int(input())]
x = 0
for i in a:
    if sum(a) != 0:
        a.append(int(input()))
    else:
        for q in a:
            q *= q
            x += q
print(x)
PS. Задача взята с курсов Stepic.
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