繁体   English   中英

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

[英]So, basically my code is printing None after printing the statement I want it to print. How can I stop this None from printing

所以,基本上我的代码在打印我希望它打印的语句后打印 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())

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()

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM