2

I am trying to write this code with more efficient way.. I just couldn't figure it out (as you see if statements doesn't look nice) The problem is pretty simple.. I need to get students name at first, then their grades.. something like

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

and I want my output will be like.. James -Failed , Kevin -Failed , Karen -Passed,Jessica -Passed

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]))
skaul05
  • 2,154
  • 3
  • 16
  • 26

5 Answers5

0

Why don't you try using loop in your if else statement??

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]))
0
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]))

You can also use a dictionary of names-grades instead of two lists.

Chris Rahmé
  • 357
  • 2
  • 6
  • 20
0

You can use a for loop before your if statements as so:

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

So this for loop will iterate through the whole list of grades stored in b

0

You can avoid for loop for grade input. Try the following script:

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

skaul05
  • 2,154
  • 3
  • 16
  • 26
0

Try it:

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() })
dimay
  • 2,768
  • 1
  • 13
  • 22