用他们的名字获取学生成绩
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() })
我正在尝试用更有效的方式编写这段代码。我只是想不通(正如你所看到的 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() })