Система оценки Python с использованием if и for

#python #python-3.x

#python #python-3.x

Вопрос:

У меня есть список name = jimmy, carolin, frank, joseph и их оценка = 100 , 90, 70, 65

Оценки являются :

 A = 95 - 100
B = 80 - 94
C = 70 - 79
D = 60 - 69
E = 0 - 59
  

и я выразился так

 students = ["jimmy", "carolin", "frank", "joseph"]

scores = ["100", "90", "70", "65"]

if scores >= 95 and scores <=100: 
    return "A"
elif scores >= 80 and scores <=94: 
    return "B"
elif scores >= 70 and scores <=79: 
    return "C"
elif scores >= 60 and scores <=69: 
    return "D"
else: 
    return "E"
  

Мне нужно сделать это так:

 jimmy, 100, A
carolin, 90, B
frank, 70, C
joseph, 65, D
  

Может ли кто-нибудь мне помочь, пожалуйста? Заранее благодарю вас!

Комментарии:

1. вы можете использовать словарь с именем в качестве ключа и метками в качестве значений

Ответ №1:

 students = ["jimmy", "carolin", "frank", "joseph"]

scores = ["100", "90", "70", "65"]

def function(scores):
    if scores >= 95 and scores <=100:
        return "A"
    elif scores >= 80 and scores <=94:
        return "B"
    elif scores >= 70 and scores <=79:
        return "C"
    elif scores >= 60 and scores <=69:
        return "D"
    else:
        return "E"

for student in students:
    print (student   ","   str(scores[students.index(student)])   ","   function(int(scores[students.index(student)])))
  

Я добавил все в один оператор печати, надеюсь, вы понимаете. Ваша функция if else также добавлена в функцию для упрощения использования.

Для оценки я предполагаю, что индекс студента будет аналогичен индексу оценки

Вы должны получить следующий вывод:

 jimmy,100,A
carolin,90,B
frank,70,C
joseph,65,D
  

Комментарии:

1. Python позволяет вам связывать условия, чтобы вам было разрешено иметь if 95 <= score <= 100: , хотя у вас есть избыточные проверки. ваш первый elif должен быть elif score >= 80: , потому что вы уже знаете его < 95 после невыполнения первого условия.

Ответ №2:

Используйте функцию для возврата оценки на основе вашей матрицы подсчета очков. Затем вы можете zip поместить все результаты в список tuples тех, к которым потребуется получить доступ позже.

 def get_grade(score):
    scores = [('A', 95, 100), ('B', 80, 94), ('C', 70, 79), ('D', 60, 69), ('E', 0, 59)]
    result = [grade for grade, low, high in scores if score >= low and score <= high]
    return result[0] if result else 'Invalid Score'


students = ["jimmy", "carolin", "frank", "joseph"]
scores = ["100", "90", "70", "65"]
grades = [get_grade(int(i)) for i in scores]

results = list(zip(students, scores, grades))

for name, score, result in results:
    print(name, score, result)
  

Вывод:

 jimmy 100 A
carolin 90 B
frank 70 C
joseph 65 D
  

Ответ №3:

Создайте словарь оценок для оценки сопоставлений диапазонов

 gradeMap = {
"A" : (95, 100),
"B" : (80, 94),
"C" : (70, 90),
"D" : (60, 69),
"E" : (0, 59)
}
  

Преобразовать оценку в оценку

Напишите функцию, которая принимает оценку и карту оценок и возвращает соответствующую оценку.

 def score_to_grade(score, gm):
    for (g, (min_score, max_score)) in gm.items():
        if (score >= min_score and score < max_score):
            return g
  

Интересная вещь, на которую стоит обратить внимание

Одна интересная вещь, которую эта ситуация позволяет нам заметить, заключается в следующем:

Словарь gradeMap очень похож на функцию с буквами оценок (A, B и т.д.) в качестве домена и парой неотрицательных чисел в качестве диапазона.

Вы можете переписать любую функцию как словарь, если домен представляет собой набор из конечного и небольшого числа значений.