Я пытаюсь найти сумму площади кухни (18,0) и спальни (10,75).
# Create the areas list
areas = ["hallway", 11.25, "kitchen", 18.0, "living room", 20.0, "bedroom",
10.75, "bathroom", 9.50]
# Sum of kitchen and bedroom area: eat_sleep_area
eat_sleep_area = sum(areas[3],areas[-3])
# Print the variable eat_sleep_area
print(eat_sleep_area)
но когда я пытаюсь запустить код, он говорит следующее: TypeError: объект float не повторяется Также я заметил, что когда я использовал другие функции, такие как min, max, они отлично работают. кто-нибудь может объяснить мне причину этого?
если вы хотите добавить две или более переменных, почему бы не использовать оператор + ?!
Попробуйте использовать эти примеры областей_map = dict (zip (областей [:: 2], областей [1 :: 2])) eat_sleep_area = областей_map ['коридор'] + областей_map ['гостиная'] областей_tup = кортеж (zip (областей [: : 2], area [1 :: 2])) area_tup [3] [1] + area_tup [-3] [1]






Для таких вещей вам нужно использовать словарь, а не список:
areas = {
'hallway': 11.25,
'kitchen': 18.0,
'living room': 20.0,
'bedroom': 10.75,
'bathroom': 9.50,
}
Затем вы можете суммировать их так:
result = areas['kitchen'] + areas['bedroom']
Словари позволяют поиск по ключу. Проверить документы, чтобы узнать больше.
В Python для sum(iterable[, start]) в качестве первого аргумента требуется итерация. Подумайте о том, чтобы просто обернуть свои аргументы в список, например:
sum([areas[3],areas[-3]])
Лучше, если вы воспользуетесь словарем:
areas = ["hallway", 11.25, "kitchen", 18.0, "living room", 20.0, "bedroom", 10.75, "bathroom", 9.50]
areas = { name : measures for name, measures in zip(areas, areas[1:])}
result = sum(areas[name] for name in ('kitchen', 'bedroom'))
print(result)
Вывод
28.75
Функция sum () складывает начало и элементы данной итерации слева направо.
sum () Параметры iterable - итерабельный (список, кортеж, словарь и т. д.), сумма элемента которого должна быть найдена. Обычно элементы итерации должны быть числами. start (необязательно) - это значение добавляется к сумме элементов итерируемого. По умолчанию начальное значение равно 0 (если не указано).
float не повторяется
Может заменить sum оператором add
from operator import add
eat_sleep_area = add(areas[3],areas[-3]) # if you have only two entities to add otherwise use sum and pass an iterator
или с суммой
eat_sleep_area = add([areas[3],areas[-3]])
Первый элемент
sumдолжен быть повторяемым. Вы проезжаете поплавок. Вам нужно просто сложить их вместе.