Форум сайта python.su
Условия:
Напишите программу, которая считывает с консоли числа (по одному в строке) до тех пор, пока сумма введённых чисел не будет равна 0 и после этого выводит сумму квадратов всех считанных чисел.
Гарантируется, что в какой-то момент сумма введённых чисел окажется равной 0, после этого считывание продолжать не нужно.
В примере мы считываем числа 1, -3, 5, -6, -10, 13; в этот момент замечаем, что сумма этих чисел равна нулю и выводим сумму их квадратов, не обращая внимания на то, что остались ещё не прочитанные значения.
Офлайн
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("А вот и не вышло нолика в сумме")
Офлайн
Paranoia_Agent, а как с вводом сделать.. чтоб вводить любые числа?
Офлайн
Stroncy, с помощью input?
Ввод построчно, через enter:
array=[int(input()) for x in range(10)]
array=list(map(int,input().split(",")))
Отредактировано Paranoia_Agent (Ноя. 21, 2014 01:10:57)
Офлайн
Paranoia_Agent, они не просто должны вводиться(input) но и каждое число с новой строки..
блин.. наверно надо input поместить в цикл while.. Вот так должен быть ввод и вывод(без букв):
http://i68.fastpic.ru/big/2014/1121/df/fa68ab90b76b7e0fa7041392714d01df.jpg
Отредактировано Stroncy (Ноя. 21, 2014 01:19:06)
Офлайн
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("А вот и не вышло нолика в сумме")
Отредактировано Stroncy (Ноя. 21, 2014 01:26:22)
Офлайн
Где ошибка?:
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)
Отредактировано Paranoia_Agent (Ноя. 21, 2014 01:36:29)
Офлайн
Paranoia_Agent, СПАСИБО!!! Всё получилось..
Офлайн
А можно сделать ту же задачу с помощью списков:
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)
Офлайн