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

所以,基本上我的代码在打印我希望它打印的语句后打印 None 。我怎样才能阻止这个 None 打印

所以,基本上我的代码在打印我希望它打印的语句后打印 None 。我怎样才能阻止这个 None 打印

噜噜哒 2023-07-11 15:31:51
所以,基本上我的代码在打印我希望它打印的语句后打印 None 。我怎样才能阻止这个 None 打印class Panda:    def __init__(self,name,gender,age):        self.name=name        self.gender=gender        self.age=age    def sleep(self,time=None):        self.time=time        if self.time!=None:            if self.time>=3 and self.time<=5:                self.food='Mixed Veggies'            if self.time>=6 and self.time<=8:                self.food='Eggplant & Tofu'            if self.time>=9 and self.time<=11:                self.food='Broccoli Chicken'            print('{} sleeps {} hours daily and should have {}'.format(self.name,self.time,self.food))        else:            print("{}'s duration is unknown thus should have only bamboo leaves".format(self.name))panda1=Panda("Kunfu","Male", 5)panda2=Panda("Pan Pan","Female",3)panda3=Panda("Ming Ming","Female",8)print(panda2.sleep(10))print(panda1.sleep(4))print(panda3.sleep())
查看完整描述

2 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

该print函数在 Python 中不返回,它只是写入stdout; 因此,当您调用sleep实例的方法时,它只会打印None.


要解决这个问题,您要做的就是要么return不打印sleep,要么直接调用它而不将其包含在print语句中。


结果会是这样的,例如:


class Panda:

    def __init__(self,name,gender,age):

        self.name=name

        self.gender=gender

        self.age=age

    def sleep(self,time=None):

        self.time=time

        if self.time!=None:

            if self.time>=3 and self.time<=5:

                self.food='Mixed Veggies'

            if self.time>=6 and self.time<=8:

                self.food='Eggplant & Tofu'

            if self.time>=9 and self.time<=11:

                self.food='Broccoli Chicken'

            return '{} sleeps {} hours daily and should have {}'.format(self.name,self.time,self.food)

        else:

            return "{}'s duration is unknown thus should have only bamboo leaves".format(self.name)


panda1=Panda("Kunfu","Male", 5)

panda2=Panda("Pan Pan","Female",3)

panda3=Panda("Ming Ming","Female",8)

print(panda2.sleep(10))

print(panda1.sleep(4))

print(panda3.sleep())

或者


class Panda:

    def __init__(self,name,gender,age):

        self.name=name

        self.gender=gender

        self.age=age

    def sleep(self,time=None):

        self.time=time

        if self.time!=None:

            if self.time>=3 and self.time<=5:

                self.food='Mixed Veggies'

            if self.time>=6 and self.time<=8:

                self.food='Eggplant & Tofu'

            if self.time>=9 and self.time<=11:

                self.food='Broccoli Chicken'

            print('{} sleeps {} hours daily and should have {}'.format(self.name,self.time,self.food))

        else:

            print("{}'s duration is unknown thus should have only bamboo leaves".format(self.name))


panda1=Panda("Kunfu","Male", 5)

panda2=Panda("Pan Pan","Female",3)

panda3=Panda("Ming Ming","Female",8)

panda2.sleep(10)

panda1.sleep(4)

panda3.sleep()


查看完整回答
反对 回复 2023-07-11
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

所以第一个打印语句是由于方法print中的函数造成的sleep。正在None按您的方式打印print(panda1.sleep())。该sleep方法不返回任何内容,因此None.

要摆脱None,您可以简单地使用panda1.sleep()而不是print(panda1.sleep())

但是,更好的选择可能是返回您希望函数打印的消息sleep,然后使用print(panda1.sleep())


查看完整回答
反对 回复 2023-07-11
  • 2 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信