#python #loops
#python #циклы
Вопрос:
мой учитель дал мне это задание «написать программу на python для чтения имен и оценок по математике, английскому и физике 3 учащихся и распечатать данные учащихся в порядке убывания на основе среднего и оценки». он хочет, чтобы мы написали это с помощью этих команд (циклы, если statment, печать, ввод)нет функций
я застрял здесь
for i in range(0, 3):
name = input("enter the student's name: ")
math = int(input("enter the Math mark: "))
eng = int(input("enter the English mark: "))
ph = int(input("enter the Physics mark: "))
Av = ((math eng ph) / 3)
print(name, Av, "%")
как я могу сравнить введенные значения в цикле?
Комментарии:
1. Привет, поскольку теперь у вас есть ответы, вы можете подумать о принятии ответа , чтобы вознаградить тот, который дает вам наиболее полезный комментарий.
Ответ №1:
Вы должны сохранить все значения в a list
, чтобы иметь возможность сортировать их для последующей печати
values = []
for i in range(0, 3):
name = input("enter the student's name: ")
math = int(input("enter the Math mark: "))
eng = int(input("enter the English mark: "))
ph = int(input("enter the Physics mark: "))
values.append((name, math, eng, ph, (math eng ph) / 3))
values.sort(key=lambda x: x[4], reverse=True)
for row in values:
print(*row)
Комментарии:
1. Для чего это
*
оператор внутри print?2. @IgnacioAlorre Он расширяет список, чтобы печатать каждый элемент
value
как отдельный, а не список как один раз. Попробуйте с и без, вы увидите 😉3. Спасибо, я так и сделаю!
4.
for v in [('suhail',3,4),('sumesh',5,6)]: print(*v)
Ответ №2:
Ну, во-первых, вы должны собрать имена и оценки, а затем сравнить их.
from statistics import mean
student_scores = {}
for i in range(0, 3):
name = input("enter the student's name: ")
math = int(input("enter the Math mark: "))
eng = int(input("enter the English mark: "))
ph = int(input("enter the Physics mark: "))
student_scores[name] = mean([math, eng, ph])
for name, avg_score in sorted(stduent_scores.items(), key=lambda d: d[1], reverse=True):
print(f"{name}: {avg_score}")