Решая для среднего:
Чтобы получить среднее, что нужно, чтобы добавить все результаты вместе, затем разделите его на количество баллов. Вы можете сделать это перебором строк и суммирования всех баллов, а затем разделить на количество линий
Сортировка по баллам:
Вам нужно вызвать функцию сортировки() и предоставить свой собственный ключ. У вас была функция, которая почти делала это, я только немного ее исправил. Вы отправляете ему список строк и ваш ключ, который возвращает результат, а затем отменяет его, так как вы хотите, чтобы они были самыми высокими до самых низких. Тогда это просто вопрос перекручивания через новый отсортированный список и печать каждую линию
Общих Комментариев
Структуры этой программы является очень неаккуратно и излишней. Вы должны просто прочитать файл один раз, а затем все выяснить. Итерация через файл внутри каждого оператора if выполняется медленно. Вы также должны использовать функции для этого. Создайте функцию, которая возвращает среднее значение, функцию, возвращающую список, упорядоченный по счету и т. Д. Оставляя код, все скремблированные в основном просто затрудняют чтение
Я реализовал их в приведенном ниже коде, но я предлагаю вы пытаетесь их по своему усмотрению теперь, когда вы понимаете, что делать, и только использовать этот код в качестве ссылки, если вы застряли
sort = input("What would you like to do with this class? Put them into alpabetical order(a)? Average the scores(b)? Highest to lowest(c)?")
wf = "file.txt"
with open(wf, 'r') as r:
if sort == 'a':
for line in sorted(r):
print(line, end = '')
elif sort == 'b':
totalScore = 0
numOfScores = 0
for line in sorted(r):
numOfScores += 1
totalScore+= int(line.split('score = ')[1])
average = totalScore/numOfScores
print(average)
elif sort == 'c':
def score(line):
return int(line.split('=')[1])
with open(wf, 'r') as r:
linesList = r.readlines()
sortedList = sorted(linesList, key=score)
for line in sortedList:
print(line.rstrip("\n"))
для этого примера я использовал подать вашу представленные примеры оценки, как, например:
bob - score = 12
harry - score = 1
ellis - score = 21
sam - score = 30
Можете ли вы отредактировать вопрос, чтобы показать образец данных в файл? – paisanco
Почему бы не импортировать текстовый файл в pandas, пакет анализа данных Python, который может сортировать и запускать агрегаты, подобные средним? – Parfait