首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我的程序不会把分数

我的程序不会把分数
EN

Stack Overflow用户
提问于 2013-07-06 04:00:37
回答 3查看 272关注 0票数 2

对于这个作业,我们应该用Python做一个类,在那里我们放3个分数,并且必须找出学生的平均分和成绩。它可以工作,但我有一个错误。当我输入一个整数(例如73)三次时,它会显示字母等级。但是,当我输入一个带有小数点的数字(例如83.7)三次时,它不会显示字母等级,这就是我们需要的数字。有没有办法让它在我输入带有小数的数字时显示分数?为什么它只对整数有效?

代码语言:javascript
复制
class grades:
    def __init__(self,name,test1,test2,test3,avg):
            self.name = name
            self.test1 = test1
            self.test2 = test2
            self.test3 = test3
            self.avg = avg

    def getName(self):
        return self.name

    def getTest1(self):
        return self.test1

    def getTest2(self):
        return self.test2

    def getTest3(self):
        return self.test3

    def getAvg(self):
        return self.avg


#main:
name = input("Enter the students name: ")
test1 = float(input("Enter the first score: "))
test2 = float(input("Enter the second score: "))
test3 = float(input("Enter the third score: "))
avg = float(test1 + test2 + test3) /3.0
grades1 = grades(name,test1,test2,test3,avg)
grades1.name
grades1.test1
grades1.test2
grades1.test3
grades1.avg
print("The student's name is:" ,grades1.name)
print(grades1.name +"'s test scores are:")
print("---------------------------:")
print("TEST1: \t\t\t",grades1.test1)
print("TEST2: \t\t\t",grades1.test2)
print("TEST3: \t\t\t",grades1.test3)
print(grades1.name +"'s average is: \t",grades1.avg)
##if avg <= 100.0 and avg >= 90.0:
##    print(name +"'s grade is: \t A")
##elif avg <= 89.0 and avg >= 80.0:
##    print(name +"'s grade is: \t B")
##elif avg <= 79.0 and avg >= 70.0:
##    print(name +"'s grade is: \t C")
##elif avg <= 69.0 and avg >= 60.0:
##    print(name +"'s grade is: \t D")
##elif avg <= 59.0 and avg >= 0.0:
##    print(name +"'s grade is: \t E")
if avg >= 90.0 and avg <= 100.0:
    print(name +"'s grade is: \t A")
elif avg >= 80.0 and avg <= 89.0:
    print(name +"'s grade is: \t B")
elif avg >= 70.0 and avg <= 79.0:
    print(name +"'s grade is: \t C")
elif avg >= 60.0 and avg <= 69.0:
    print(name +"'s grade is: \t D")
elif avg >= 0.0 and avg <= 59.0:
    print(name +"'s grade is: \t E")

我之所以评论一年级的部分,是因为我尝试了这两种方法,但都没有成功。

这就是我尝试的方法,但小数没有成功。

代码语言:javascript
复制
Enter the students name: k
Enter the first score: 89.9
Enter the second score: 89.9
Enter the third score: 89.9
The student's name is: k
k's test scores are:
---------------------------:
TEST1:           89.9
TEST2:           89.9
TEST3:           89.9
k's average is:      89.90000000000002
EN

Stack Overflow用户

发布于 2013-07-06 04:11:23

您的if-elif语句没有涵盖所有可能的值。例如,如果平均值为89.5,则所有块都不会捕获它。解决这个问题的最简单方法是从if-elif语句中删除<=子句,因为它们是不必要的。

代码语言:javascript
复制
if avg >= 90.0:
    print(name +"'s grade is: \t A")
elif avg >= 80.0:
    print(name +"'s grade is: \t B")
elif avg >= 70.0:
    print(name +"'s grade is: \t C")
elif avg >= 60.0:
    print(name +"'s grade is: \t D")
else:
    print(name +"'s grade is: \t E")
票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17496099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档