2013-03-23 3 views
0

Как найти сумму списка чисел, находящихся во вложенном цикле?Python: вычисление суммы для каждого цикла

s=0 
    people=eval(input()) 
    for i in range(people): 
     firstn=input() 
     lastn=input() 
     numbers=(eval(input())) 

     print(firstn, lastn, numbers) 
     for b in range(numbers): 

     numbers=eval(input()) 
     s+=numbers 

     print(b) 

вход нижеследовал:

5 #nubmer of people I need to calculate 
    Jane #firstname 
    Doe #lastname 
    4 #number of floats for each person, pretty sure this is for the second loop 
    38.4 #these are the floats that i need to calculate for each person to find their sum 
    29.3 
    33.3 
    109.74 
    William #loop should reset here as this is the next person's first name 
    Jones 
    2 
    88.8 
    99.9 
    firstname 
    lastname 
    number of floats 
    float1 
    float2... 

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

+5

почему 'eval'? используйте 'int()' или 'float()'. –

+0

TypeError: объект 'float' не может быть интерпретирован как целое число – Frontier

+0

попробуйте что-то вроде: 'numbers = float (input())' или 'numbers = int (input())'. –

ответ

1
s = [] 
people = int(raw_input()) 
for i in range(people): 
    firstn = raw_input() 
    lastn = raw_input() 
    numbers = int(raw_input()) 

    print(firstn, lastn, numbers) 
    temp = 0 
    for b in range(numbers): 
     numbers = float(raw_input()) 
     temp += numbers 
    s.append(temp) 
print(s) 

Я думаю, если вы хотите записать все результаты внутреннего цикла и отсутствие печати вам нужен список. Я протестировал ваш ввод, и с Python2.7 все в порядке.

+0

Я отредактировал свой ответ и протестировал код. Я работаю для вашего входа с Python2.7. У вас может быть попытка. @James – zhangyangyu

+0

Это python 3, говорит, что raw_input не определен – Frontier

+0

Просто замените все 'raw_input()' на 'input()', и все в порядке. @ James – zhangyangyu

0

Ваш вопрос сформулирован плохо, но если я правильно понимаю, это может сработать.

people = int(input('Enter number of people: ')) # eval is generally not a good idea 
for i in range(people): 
    firstn = input() 
    lastn = input() 

    numbers= int(input('Enter number: ')) 

    print(firstn, lastn, numbers) 

    print(sum(numbers)) # prints sum of 0,1,2...numbers-1 

Это предполагает, что вы используете Python 3. Для Python 2.7, замените input() с raw_input()

Надеется, что это ответ на ваш вопрос

+0

Это мой второй вопрос, я, похоже, не могу помещать входные данные в список, как я бы хотел, они «Я не показываю, как я их отступом, независимо от того, сколько индексов количество вложений. – Frontier

+0

Что-то вроде: 'input_list = [] while True: in = float (input ('Enter next input (ввести ничего для отмены)')), если не в: break else: input_list.append (in)' –

+0

@James Лучше предоставить образец ввода/вывода в теле вопроса. –

1

Это самое простое решение, что я могу думать:

nop=int(input()) 
for _ in range(nop): 
    fname,lname=input(),input() 
    n=int(input()) 
    summ=sum(float(input()) for _ in range(n)) 
    print("For {0} {1} the sum is {2}".format(fname,lname,summ)) 

выход:

$ python3 foo.py < abc 
For Jane Doe the sum is 210.74 
For William Jones the sum is 188.7 

где abc содержит:

2 
Jane 
Doe 
4 
38.4 
29.3 
33.3 
109.74 
William 
Jones 
2 
88.8 
99.9 
Смежные вопросы