用他们的名字获取学生成绩

Getting student grades with their names

我正在尝试用更有效的方式编写这段代码。我只是想不通(正如你所看到的 if 语句看起来不太好)问题很简单。我需要让学生首先是名字,然后是他们的成绩……类似

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

我希望我的输出是这样的。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]))

为什么不尝试在 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]))
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]))

您也可以使用姓名-成绩字典代替两个列表。

您可以在 if statements 之前使用 for loop,如下所示:

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

所以这个 for 循环将遍历存储在 b

中的整个成绩列表

您可以避免 for 成绩输入循环。尝试以下脚本:

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

试一试:

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() })