gpt4 book ai didi

python - 为什么无论程序定义什么(包括平均值),输入的每个成绩都是相同的?

转载 作者:太空宇宙 更新时间:2023-11-03 21:08:01 24 4
gpt4 key购买 nike

程序如下:编写一个程序,要求用户输入5个测试成绩。该程序应显示每个分数的字母等级以及平均测试分数。

我的输出出现问题,显示每个成绩(包括平均值)的第一个输入成绩的字母成绩。我的数字平均值也以字母成绩输出,但它给出了正确的平均字母,而不是成绩的正确数字结果。我在低级编码类,因此程序必须按照这种格式编写。

这是代码:

a=float(input("Enter score 1:"))
b=float(input("Enter score 2:"))
c=float(input("Enter score 3:"))
d=float(input("Enter score 4:"))
e=float(input("Enter score 5:"))
def determine_grade(a,b,c,d,e):
num=a
if(num<=100 and num>=90):
grade='A'
elif(num<=89 and num>=80):
grade='B'
elif(num<=79 and num>=70):
grade='C'
elif(num<=69 and num>=60):
grade='D'
else:
grade='F'
return grade

def calc_average(a,b,c,d,e):
mean=(a+b+c+d+e)//5
if mean<=100 and mean>=90:
avggrade='A'
elif(mean<=89 and mean>=80):
avggrade='B'
elif(mean<=79 and mean>=70):
avggrade='C'
elif(mean<=69 and mean>=60):
avggrade='D'
else:
avggrade='F'
return avggrade

grade=determine_grade(a,b,c,d,e)
avggrade=determine_grade(a,b,c,d,e)
mean=calc_average(a,b,c,d,e)
determine_grade(a,b,c,d,e)
calc_average(a,b,c,d,e)
print("Score Numeric Grade Letter Grade")
print("--------------------------------------------")
print("Score 1: ",a," ",grade)
print("Score 2: ",b," ",grade)
print("Score 3: ",c," ",grade)
print("Score 4: ",d," ",grade)
print("Score 5: ",e," ",grade)
print("--------------------------------------------")
print("Average Score: ",mean," ",avggrade)

每当我输入(a)时:

num=a,b,c,d,e

代替代码中显示的内容,我收到一个语法错误:

TypeError: '<=' not supported between instances of 'tuple' and 'int'

如果我不执行 (a) 中所示的操作,我的输出如下:

Enter score 1:90
Enter score 2:88
Enter score 3:76
Enter score 4:68
Enter score 5:40
Score Numeric Grade Letter Grade
--------------------------------------------
Score 1: 90.0 A
Score 2: 88.0 A
Score 3: 76.0 A
Score 4: 68.0 A
Score 5: 40.0 A
--------------------------------------------
Average Score: C A

最佳答案

好的,这里有一些事情要谈。首先,我建议您多尝试一些更简单的函数,以便正确地习惯它们。当您定义 define_grade(a,b,c,d,e) 时,您的函数将期望在函数内找到 a,b,c,d,e 参数,但如果您再次阅读它,您会发现你会注意到你只提到了a。这意味着当您调用 grade=define_grade(a,b,c,d,e) 时,您仅计算 a 的成绩,这就是为什么每个人的成绩都相同(如果您输入 grade 使用您的代码,您会发现它将输出 'A'

编写完全符合您要求的函数的另一种方法是:

def determine_grade(score):
num=score
if(num<=100 and num>=90):
grade='A'
elif(num<=89 and num>=80):
grade='B'
elif(num<=79 and num>=70):
grade='C'
elif(num<=69 and num>=60):
grade='D'
else:
grade='F'
return grade

您输入分数(可以是 a、b、c、d 或 e),它会计算成绩。如果你想获得每个人的成绩,那么你可以这样做:

grades=[]
for i in [a,b,c,d,e]:
grades.append(determine_grade(i))

这将带来包含所有成绩的列表。

然后,如果你想要平均成绩,最好计算平均分数,这样你就可以使用相同的函数来获取成绩:

mean_score=np.array([a,b,c]).mean()
mean_grade(determine_grade(mean_score)

这样做,您将获得所需的所有信息,并且代码行数更少(您可以使用列表推导式使其更加高效,但这有点更高级)。

关于python - 为什么无论程序定义什么(包括平均值),输入的每个成绩都是相同的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55270269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com