2016-09-04 3 views
-2

У меня есть упражнение, входные данные будут содержать общее количество пар для обработки в первой строке. Следующие строки будут содержать пары - по одной паре в каждой строке. Ответ должен содержать результаты, разделенные пробелами. Мой код:Как сделать сумму в Loop

n = int(raw_input()) 
    sum = 0 

    for i in range(n): 
     y = raw_input().split(" ") 
     for i in y: 
      sum = sum + int(i) 


    print sum   

С моим кодом, я пришел Сумму вместе, но я, что результаты приходят разделенные пробелами. Спасибо за вашу помощь.

+0

Если вы хотите напечатать частичные суммы, переместить и 'сумму = 0 'и' print' внутри внешнего контура. –

+2

Код испорчен. Почему две петли имеют одинаковое имя iternator (i). Попробуйте изменить итератор во втором цикле от i до j. –

+0

@SuryaTejaKarra Это не проблема. 'i' не используется во внешнем цикле, поэтому его переопределение во внутреннем не имеет значения (но это, безусловно, плохая практика). –

ответ

0

с текущим кодом, что вы получите это общая сумма всех заданных чисел, чтобы получить сумму в каждой строке вам необходимо инициализировать счетчик во внешнем контуре, а затем распечатать его, и, как вы хотите чтобы распечатать все это в одной строке, есть несколько способов сделать это, например сохранить в списке или сообщить print, которые не печатают новую строку, которая делается путем добавления , в конце, например print x, с учетом этого то необходимо внести необходимые изменения:

n = int(raw_input()) 
for i in range(n): 
    pairs = raw_input().split() #by default split use spaces 
    pair_sum = 0 
    for p in pairs: 
     pair_sum += int(p) # a += b is the same as a = a + b 
    print pair_sum, 

print "" # to print a new line so any future print is not done in the same line as the previous one 

Это была версия с печатью на строку, следующая версия, используя список

n = int(raw_input()) 
resul_per_line = [] 
for i in range(n): 
    pairs = raw_input().split() #by default split use spaces 
    pair_sum = 0 
    for p in pairs: 
     pair_sum += int(p) # a += b is the same as a = a + b 
    resul_per_line.append(str(pair_sum)) #conver each number to a string to use with join bellow 

print " ".join(resul_per_line) 

с любым из вышеперечисленных пусть говорит, например, о том, что входные данные

3 
1 2 
40 50 
600 700 

тогда результат будет

3 90 1300 

некоторые части приведенного выше кода может упростить с помощью built in таких функций, как map и sum, например часть

pair_sum = 0 
    for p in pairs: 
     pair_sum += int(p) 

может стать

pair_sum = sum(map(int,pairs))  
+0

Спасибо, это то, что я хочу. – iratxe

0

Ух, похоже, вы используете одну и ту же переменную i во внутреннем цикле как внешний контур - это плохая практика и может привести к ошибкам в будущем.

В настоящее время вы добавляете оба элемента в каждую пару для суммирования, а затем распечатываете это в конце, вы можете исправить это двумя разными способами.

  1. Вы можете суммировать каждую пару, конвертировать сумму в строку, а затем конкатенацию, что с остальными суммами как строки или

  2. Вы можете напечатать сумму каждой пары сразу же после того, как суммируя их с print sum,, который будет печатать номер без новой строки, чтобы вы могли распечатать все результаты в одной строке.

+0

Можете ли вы дать мне пример, я новичок в Python, thnks – iratxe

+0

@iratxe Для первого или последнего? Если мы сделаем последнее, вы захотите переместить 'sum = 0' вправо перед внутренним циклом for и добавить« сумму печати »после внутреннего цикла. –

+0

Для первых, спасибо – iratxe

Смежные вопросы