» напишите программу на python с оценками 3 учащихся и распечатайте данные учащихся в порядке убывания на основе среднего и оценки».

#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}")