Предмет: Информатика, автор: GodFather2001

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

И напишите с объяснением, пожалуйста

Ответы

Автор ответа: KnowsUser1
1

Ответ:

--- 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()

Объяснение:


GodFather2001: Можете, пожалуйста, написать пример, как правильно вводить данные в print('Enter Student parameters:)
KnowsUser1: Ну, например: B Smirnov 180 74
KnowsUser1: А вообще, если присмотреться, то при запуске в консоль, после ввода числа обрабатываемых учеников, будет выведено сообщение, в котором будет чётко написано, как, в каком порядке и что вводить.
GodFather2001: Все понял, спасибо
Похожие вопросы
Предмет: Русский язык, автор: упрт12345
среди предложений 5-8 найдите предложения с обособленным обстоятельством,напишите его номер.

(1)Утром метро полно шелеста газет. (2) Развёрнутые страницы остро пахнут типографской краской. (3) Внимание людей странствует в новостях мира. (4) Лица замкнуты, и новый день ещё не успел вполне разбудить их и связать друг с другом.    (5)Каждый ещё отгорожен своим утром, своим, может быть, незабытым сном, своими заботами, любовью, теплом или горечью дома.(6) Рядом с вами, за этим нахмуренным лбом или высоким шиньоном, таятся чужая судьба, надежды и страх.(7) А может быть, где-то рядом горит огонь сильных мыслей, таланта, страсти?...(8) И мы мчимся, придерживаясь за сверкающие поручни, отражаясь в посверкивающей тьме стекол, а зёрнышки впечатлений прорастают, и, кто знает, какие новые всходы дадут они потом.                                                                                                                      (Н. Ватолина)