#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 и т.д.) в качестве домена и парой неотрицательных чисел в качестве диапазона.
Вы можете переписать любую функцию как словарь, если домен представляет собой набор из конечного и небольшого числа значений.