Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Python яндекс практикум это одно и тоже или нет

Mark Timofeev Ученик (151), закрыт 1 неделю назад
Следующая задача: сосчитать суммарную площадь всех помещений. Принцип решения будет чем-то похож на подход в предыдущей задаче.
Для решения этой задачи никаких сравнений не понадобится; суммировать нужно все значения списка, без исключений.
Создаём переменную sum_area, к значению которой будем по очереди прибавлять значения каждого из элементов списка. Пока что значение этой переменной — ноль.
В цикле перебираем все элементы списка flat, как и в прошлой задаче.
Значение каждого элемента списка прибавляем к sum_area.
Напечатаем сообщение, в котором укажем общую площадь квартиры.

 flat = [ 
5.55, 22.19, 7.78, 26.86, 5.55,
29.84, 22.19, 5.55, 16.85, 4.52
]

# В переменной sum_area будем суммировать площади комнат.
# Пока что она равна нулю.
sum_area = 0

for room in flat:
# На каждой итерации цикла прибавляем к sum_area площадь ещё одной комнаты
# Запишем эту операцию через сокращённый синтаксис +=
sum_area += room

print('Общая площадь =', sum_area) #это решение от яндекса, оно мудреное
а вот мой способ, у меня возник вопрос, это одно и тоже или яндекс не компетентно объясняет

 flat = [ 
5.55, 22.19, 7.78, 26.86, 5.55,
29.84, 22.19, 5.55, 16.85, 4.52
]


sum_area = sum(flat)

print('Общая площадь =', sum_area)
Лучший ответ
Супермаркет Знаток (276) 1 неделю назад
Да, это одно и то же. Оба способа решения задачи верны и дадут одинаковый результат.
Остальные ответы
Леонид Брусов Ученик (149) 1 неделю назад
Я не разбираюсь в математике
Chudo_Chudnoe Мастер (1582) 1 неделю назад
На самом деле, твой подход с использованием встроенной функции sum() для вычисления суммы элементов списка является не только правильным, но и более эффективным и чистым способом решения задачи по сравнению с циклом. Встроенная функция sum() предназначена для того, чтобы вычислять сумму чисел в итерируемых объектах, таких как списки, и она делает это оптимально.

Вариант, предложенный в твоём примере от Яндекса, использует явный цикл for для прохождения по всем элементам списка и добавления каждого из них к переменной sum_area. Этот способ полностью корректен и хорошо иллюстрирует, как работает накопление суммы в цикле, что может быть полезно для обучения или в случаях, когда нужна дополнительная обработка данных во время итерации.

В твоём же случае, когда задача состоит просто в вычислении суммы без дополнительных условий или операций, использование sum() предпочтительнее. Это сокращает количество кода, уменьшает возможность ошибок и повышает читаемость.

Оба способа корректно решают задачу и дают одинаковый результат, но твой метод является более pythonic, как говорится - следует философии и стилю Python как языка программирования ?
Mark TimofeevУченик (151) 1 неделю назад
мне кажется им стоило сразу начать с тут более хорошо показан смысл
Depeche Mode XXI
Хватит планировок, даёшь музыку: посчитаем на Python, сколько альбомов выпустила музыкальная группа Depeche Mode в 21 веке.
# Список годов, в которые Depeche Mode выпускала альбомы
years = [
1981, 1982, 1983, 1984, 1986, 1987, 1990,
1993, 1997, 2001, 2005, 2009, 2013, 2017
]

# В этой переменной будем подсчитывать количество альбомов.
# Пока что в ней ничего нет, она равна нулю.
count = 0

for year in years:
if year > 2000:
# Каждый раз загибаем по одному пальцу,
# обнаружив альбом, выпущенный в 21 веке.
count += 1 # Это то же самое, что count = count + 1

print('Выпущено альбомов в XXI веке:', count)
Mark Timofeev,
 count = sum(y > 2000 for y in years) 
И здесь цикл тоже не нужен.
Chudo_ChudnoeМастер (1582) 1 неделю назад
Бро, не поверишь, я тут уже целую неделю переслушиваю все альбомы DM ?
Пример с Depeche Mode и их альбомами хорошо иллюстрирует использование циклов для решения практической задачи подсчета определенных условий, и ничего тут странного нет) По сути, этот способ не только более интересен в контексте обучения, но и помогает понять и оценить важность итерационных процессов в python.

Не сочти за грубость, но я чутка поправил твой код)

В комменте дальше, тут места не хватает)
Chudo_ChudnoeМастер (1582) 1 неделю назад
Такой подход подойдёт для случаев, когда необходимо выполнить дополнительные проверки или операции во время итерации по данным. Так чаще бывает)

 # Список годов, в которые Depeche Mode выпускала альбомы  
years = [
1981, 1982, 1983, 1984, 1986, 1987, 1990,
1993, 1997, 2001, 2005, 2009, 2013, 2017
]

# Переменная для подсчета количества альбомов, выпущенных в 21 веке
count = 0

# Проходим по списку годов
for year in years:
if year > 2000:
# Подсчитываем альбомы, выпущенные в 21 веке
count += 1

print('Выпущено альбомов в XXI веке:', count)
Похожие вопросы