2016-11-21 1 views
0

Цель программы - спросить у пользователя, сколько предметов одежды они собирают в каждый день 3-х дневной (выходной) одежды, сделайте это снова во второй уикенд, затем сравните два выходных дня (одежда в день).Python typeerror int object not itable, проблема с функцией суммы (я думаю)

Вот мой код:

import math 

num_clothes = int() 
weekend_total = int() 
weekend_avg = float() 
total_clothes = int() 
total_avg = float() 
index = int() 


index = 1 
while index <= 2: 
    index = 1 
    while index <= 3: 
     num_clothes = int(input("How many articles of clothing did you collect today? ")) 
     index = index + 1 

    weekend_total = sum(num_clothes) 
    weekend_avg = weekend_total/3 
    print("Total Collected:\t", weekend_total) 
    print("Weekend Average:\t", weekend_avg) 
    index = index + 1`1 

total_clothes = sum(weekend_total) 
total_avg = total_clothes/6 
print("Total Number of Clothing Collected:\t", total_clothes) 
print("Average Collected:\t", total_avg) 

А вот ошибка я получаю:

Traceback (most recent call last): 
    File "G:\ITCS 1140\labs\python\lab 9.py", line 17, in <module> 
    weekend_total = sum(num_clothes) 
TypeError: 'int' object is not iterable 

Я пытаюсь сделать num_clothes в список и добавить все значения его с суммой (num_clothes).

ответ

0

Your num_clothes является переменной типа INT и вы передаете эту переменную в качестве параметра в sum function

weekend_total = sum(num_clothes) 

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

Если вы хотите прочитать список от пользователя, попробуйте изменить свой вклад в это:

a = [int(x) for x in input().split()] 

Example 
------- 

    >>> a = [int(x) for x in input().split()] 
    3 4 5 
    >>> a 
    [3, 4, 5] 
    >>> sum(a) 
    12 
    >>> 

Source

В качестве альтернативы, вы можете оставить свой код, как это и изменить num_clothes в список(). Затем, после того, как прочитал вход, добавить результат к списку:

num_clothes = list() 

... 

num_clothes.append(int(input(...)) 

... 

weekend_total = sum(num_clothes) 
+0

, поэтому я просто попытался сделать второй, и я получил сообщение об ошибке: Traceback (последний последний звонок): Файл «G: \ ITCS 1140 \ labs \ python \ lab 9.py», строка 16, в num_clothes.append (int (ввод («Сколько предметов одежды вы собрали сегодня? "))) AttributeError: объект 'int' не имеет атрибута 'append' –

+0

Вы изменили свой тип num_clothes на list() вместо int()? Я обновил этот пример. – coelhudo

+1

hooray вы его исправили !!!! –

0

sum() является функцией, которая добавляет все объекты итератор объекта, например, список

list = [1,2,3] 
sum(list) 

>>> 6 

либо изменить num_clothes к списку с помощью .append() и добавления целого числа в список каждую итерацию цикла, в то время как

или просто сделать num_clothes в общем делая += int(input(..etc))

+0

Как мне сделать добавьте вещь? как num_clothes.append (что здесь происходит)? Или если я хочу сделать это общей, я просто распечатаю num_wear как общее число и не имею полную переменную? –

+0

Целое число, которое вы хотите добавить в список, так что для каждой итерации цикла while do num_clothes.append (int (input («how many clothes:»))) – Padskiiz

+0

Я также предложил бы использовать raw_input() для ввода() – Padskiiz

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