
(Задача по Питону) По заданным сведениям об учениках класса определить средний вес мальчиков и
средний рост девушек. Вывести фамилию самого высокого ученика в классе. И напишите с объяснением, пожалуйста

Ответы на вопрос

Ответ:
--- Python 3.7 ---
import statistics
def ReadData(Count): #Читаем с консоли информацию об ученике
print('Enter Student parameters: gender (G/B (Upper case!)), surname, height and weight. Use "space" to split data\nStrictly follow input order!\n')
for _ in range(Count):
rawData = input().split(' ')
yield {'gender': rawData[0],'surname':rawData[1], 'height':int(rawData[2]), 'weight':int(rawData[3])}
def IsolateParameter(Container, Attribute): #Возвращает итерируемый объект. Перебирает словарь, возвращает значение в словаре по заданному ключу
for LocCont in Container:
yield LocCont[Attribute]
def StatAverage(Cont, Attribute, StatFunc): #Подсчитывает статистику (функция, использующаяся для подсчёта статистики, задаётся при вызове функции под именем StatFunc) для всех значений словаря по заданному ключу
return StatFunc(list(IsolateParameter(Cont, Attribute)))
def GetTopHeight(Cont): #Возвращает максимальное значение среди всех элементов словаря под ключом 'height'
return max(list(IsolateParameter(Cont, 'height')))
def main(): #Основное тело программы.
RawData = ReadData(int(input('Count of Students:\n')))
ListedData = list(RawData) #Работать с генератором далее не удобно
AllBoys = filter(lambda g: g['gender'] == 'B', ListedData)
AllGirls = filter(lambda g: g['gender'] == 'G', ListedData)
AvBoyWeight = StatAverage(AllBoys, 'weight', statistics.mean)
AvGirlsHeight = StatAverage(AllGirls, 'height', statistics.mean)
TopHeightSurname = GetTopHeight(ListedData)
print('''
Average Boys weight: {0};
Average Girls height: {1};
Surname of tallest student: {2}
'''.format(AvBoyWeight, AvGirlsHeight, TopHeightSurname))
if __name__ == '__main__':
main()
Объяснение:



Конечно, я помогу вам написать код на Python для решения данной задачи. Предположим, что у вас есть список students
, каждый элемент которого представляет информацию об ученике в виде словаря. Каждый словарь содержит ключи "имя"
, "пол"
, "рост"
и "вес"
. Вам нужно вычислить средний вес мальчиков, средний рост девушек и найти фамилию самого высокого ученика в классе.
Вот как может выглядеть код:
pythondef main():
students = [
{"имя": "Иванов", "пол": "м", "рост": 175, "вес": 70},
{"имя": "Петрова", "пол": "ж", "рост": 160, "вес": 55},
{"имя": "Сидоров", "пол": "м", "рост": 180, "вес": 75},
# ... добавьте остальных учеников
]
male_weights = []
female_heights = []
tallest_student = None
for student in students:
if student["пол"] == "м":
male_weights.append(student["вес"])
else:
female_heights.append(student["рост"])
if tallest_student is None or student["рост"] > tallest_student["рост"]:
tallest_student = student
avg_male_weight = sum(male_weights) / len(male_weights) if male_weights else 0
avg_female_height = sum(female_heights) / len(female_heights) if female_heights else 0
print("Средний вес мальчиков:", avg_male_weight)
print("Средний рост девушек:", avg_female_height)
print("Самый высокий ученик:", tallest_student["имя"])
if __name__ == "__main__":
main()
Объяснение кода:
- Мы определяем список
students
, который содержит информацию об учениках. - Создаем пустые списки
male_weights
иfemale_heights
для хранения весов мальчиков и ростов девушек соответственно. - Используя цикл
for
, мы проходим по каждому ученику в спискеstudents
. - Внутри цикла мы проверяем пол ученика. Если это мальчик, его вес добавляется в список
male_weights
, иначе его рост добавляется в списокfemale_heights
. - Мы также проверяем, является ли текущий ученик самым высоким, сравнивая его рост с ростом текущего самого высокого ученика. Если текущий ученик оказывается выше, мы обновляем
tallest_student
. - После завершения цикла, вычисляем средний вес мальчиков и средний рост девушек, обрабатывая случаи, когда соответствующие списки пусты.
- Наконец, выводим на экран средний вес мальчиков, средний рост девушек и имя самого высокого ученика.
Убедитесь, что в списке students
содержится корректная информация об учениках, и запустите код, чтобы получить требуемые результаты.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili