(Задача по Питону) По заданным сведениям об учениках класса определить средний вес мальчиков и средний рост девушек. Вывести фамилию самого высокого ученика в классе.
def IsolateParameter(Container, Attribute): #Возвращает итерируемый объект. Перебирает словарь, возвращает значение в словаре по заданному ключу
for LocCont in Container:
yield LocCont[Attribute]
def StatAverage(Cont, Attribute, StatFunc): #Подсчитывает статистику (функция, использующаяся для подсчёта статистики, задаётся при вызове функции под именем StatFunc) для всех значений словаря по заданному ключу
--- 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()
Объяснение: