Получение оценок учащихся с их именами - PullRequest
2 голосов
/ 14 июля 2020

Я пытаюсь написать этот код более эффективным способом ... Я просто не мог понять это (как вы видите, если утверждения выглядят не очень красиво) Проблема довольно проста ... Мне нужно узнать имена учеников на сначала, затем их оценки .. что-то вроде

James - 45, Kevin -51, Karen - 78, Jessica -64

, и я хочу, чтобы мои результаты были как .. Джеймс: Неудача, Кевин-Неудача, Карен -Пройдено, Джессика -Пройдено

a =[]
b=[]
for i in range(0,4):
    name = input("Name:")
    a.append(name)
    for j in range(0,1):
        grade = int(input("Exam Grade:"))
        b.append(grade)

average =(sum(b)/len(b))


if(b[0]<average):
    print("{}- Failed".format(a[0]))
if(b[1]<average):
    print("{}- Failed".format(a[1]))
if(b[2]<average):
    print("{}- Failed".format(a[2]))
if(b[3]<average):
    print("{}- Failed".format(a[3]))
if(b[0]>average):
    print("{}- Passed".format(a[0]))
if(b[1]>average):
    print("{}- Passed".format(a[1]))
if(b[2]>average):
    print("{}- Passed".format(a[2]))
if(b[3]>average):
    print("{}- Passed".format(a[3]))

Ответы [ 5 ]

0 голосов
/ 14 июля 2020

Попробуйте:

all_stud = {}
for i in range(0,4):
    name = input("Name:")
    grade = int(input("Exam Grade:"))
    all_stud[name] = grade

average =(sum(all_stud.values())/len(all_stud))

print({f"{i} - Failed" if v <= average else f"{i} - Passed" for i, v in all_stud.items() })
0 голосов
/ 14 июля 2020

Вы можете избежать for l oop для ввода оценки. Попробуйте следующий сценарий:

a,b = [],[] 
for i in range(4):
  a.append(input("Name: "))
  b.append(int(input("Grade: ")))

avg = sum(b)/len(b)
for i in range(4):
  if b[i] < avg:
    print(f"{a[i]} - Failed")
  else:
    print(f"{a[i]} - Passed")

0 голосов
/ 14 июля 2020
a = []
b = []

for i in range(4):
    a.append(input("Name: "))
    b.append(int(input("Exam Grade: ")))

average = (sum(b)/len(b))

for i in range(4):
    if b[i] < average:
        print("{} - Failed".format(a[i]))
    else:
        print("{} - Passed".format(a[i]))

Вы также можете использовать словарь имен-оценок вместо двух списков.

0 голосов
/ 14 июля 2020

Вы можете использовать for loop перед if statements так:

for each in b:
    if each < average:
        print("{}- Failed".format(a[each]))
    elif each > average:
        print("{}- Passed".format(a[each]))

Таким образом, это для l oop будет перебирать весь список оценок, хранящихся в b

0 голосов
/ 14 июля 2020

Почему бы вам не попробовать использовать l oop в инструкции if else ??

a =[]
b=[]
for i in range(0,4):
    name = input("Name:")
a.append(name)
for j in range(0,1):
    grade = int(input("Exam Grade:"))
    b.append(grade)

average =(sum(b)/len(b))
for k in range(0,4):
if(b[k]<average):
 print("{}- Failed".format(a[k]))
else:
    print("{}- Passed".format(a[k]))
...