为了账号安全,请及时绑定邮箱和手机立即绑定

为什么打印出来会多一个None,请大神指点

class Person(object):


    def __init__(self, name, score):

        self.name = name

        self.score = score


    def get_grade(self,__score):

        self.__score = __score

        if self.__score >= 90:

            print("A-优秀")

        elif self.__score >= 60:

            print("B-及格")

        else:

            print("C-不及格")

p1 = Person('Bob', 90)

p2 = Person('Alice', 65)

p3 = Person('Tim', 48)


print p1.get_grade()

print p2.get_grade()

print p3.get_grade()


正在回答

5 回答


方法get_grade()里面:

    你用的是print 这是打印的意思
    应该用return 这表示返回的意思
print p1.get_grade() 你需要p1.get_grade()方法返回数据,前面的print才能打印出东西

0 回复 有任何疑惑可以回复我~

def get_grade()这个函数没有返回值,所以默认返回一个None,python 中的print 需要接收一个值,如果没有,则打印None

1 回复 有任何疑惑可以回复我~

    def get_grade(self,__score):

        self.__score = __score

        if self.__score >= 90:

            print("A-优秀")

        elif self.__score >= 60:

            print("B-及格")

        else:

            print("C-不及格")

    return 1


改成这样你可以试一下,助你理解

0 回复 有任何疑惑可以回复我~

print里面不是一个字符串吗?为什么会是打印出来none呢??

0 回复 有任何疑惑可以回复我~
#1

拥抱每天最早的阳光

print p1.get_grade()这条语句会先执行get_grade方法,get_grade方法会判断score,然后根据代码打印出A,之后就会跳出判断,get_grade方法也就执行完毕了。此时再执行print方法,因为get_grade方法并没有返回值,所以打印出了个None。如果将get_grade方法中的print 'A'修改成return 'A'那么执行完get_grade方法后有返回值,print就会打印此返回值。
2019-08-04 回复 有任何疑惑可以回复我~

你写成print ‘A’,结果就会显示为 A none
而写成 return ‘A’,结果就只会显示A

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

为什么打印出来会多一个None,请大神指点

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信