微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从类方法打印时,如何在没有括号和引号的情况下在列表不是整个列表中打印“特定”元素?

如何解决从类方法打印时,如何在没有括号和引号的情况下在列表不是整个列表中打印“特定”元素?

我正在尝试使用以下代码从列表中打印“特定”元素。 在打印类实例变量 self.Engine 时,输出 ['merlin'] 与引号和括号一起打印。如何简单地打印字符串,而不用引号和括号?

代码如下:

class Rockets(object):

    Stages = "2 Stage"

    def __init__ (self,Rocket_name,Company_Name,CEO,Headquarters,Established):
        self.Rocket_name = Rocket_name
        self.Company_Name = Company_Name
        self.CEO = CEO
        self.Headquarters = Headquarters
        self.Established = Established
        self.Engine=[]
    
    def add_engine(self,Engine_name):
        self.Engine.append(Engine_name)
            
   def Rocket_Details(self):
        return(print("Rocket:",self.Rocket_name,"\nEngine:",self.Engine,"\nStages:",self.Stages,"\nCompany Name:",self.Company_Name,"\nCEO:",self.CEO,"\nHeadquarters:",self.Headquarters,"\nestablished:",self.Established))

Falcon9 = Rockets("Flacon9","Space Exploration Technologies Corp.","Elon Musk","Hawthorne,California",2002)
Falcon9.add_engine('merlin')
Falcon9.Rocket_Details()

输出

Rocket: Flacon9 
Engine: ['merlin'] 
Stages: 2 Stage 
Company Name: Space Exploration Technologies Corp. 
CEO: Elon Musk 
Headquarters: Hawthorne,California 
Established: 2002

解决方法

您可以使用 str.join。例如:

class Rockets(object):

    Stages = "2 Stage"

    def __init__(
        self,Rocket_name,Company_Name,CEO,Headquarters,Established
    ):
        self.Rocket_name = Rocket_name
        self.Company_Name = Company_Name
        self.CEO = CEO
        self.Headquarters = Headquarters
        self.Established = Established
        self.Engine = []

    def add_engine(self,Engine_name):
        self.Engine.append(Engine_name)

    def Rocket_Details(self):
        return print(
            "Rocket:",self.Rocket_name,"\nEngine:"," ".join(self.Engine),# <--- you can use str.join
            "\nStages:",self.Stages,"\nCompany Name:",self.Company_Name,"\nCEO:",self.CEO,"\nHeadquarters:",self.Headquarters,"\nEstablished:",self.Established,)


Falcon9 = Rockets(
    "Flacon9","Space Exploration Technologies Corp.","Elon Musk","Hawthorne,California",2002,)
Falcon9.add_engine("Merlin")
Falcon9.Rocket_Details()

打印:

Rocket: Flacon9 
Engine: Merlin 
Stages: 2 Stage 
Company Name: Space Exploration Technologies Corp. 
CEO: Elon Musk 
Headquarters: Hawthorne,California 
Established: 2002
,
class Rockets(object):

Stages = "2 Stage"

def __init__ (self,Established):
    self.Rocket_name = Rocket_name
    self.Company_Name = Company_Name
    self.CEO = CEO
    self.Headquarters = Headquarters
    self.Established = Established
    self.Engine=['Unknown'] # you can replace this with empty string ['']

def add_engine(self,Engine_name):
    self.Engine.append(Engine_name)
        
def Rocket_Details(self):
     return(print("Rocket:",self.Engine[-1],"\nStages:",self.Established))

我猜测您将引擎作为列表的原因是因为您期望引擎会随着时间的推移而改变。如果这是逻辑,那么上面的代码将输出引擎名称的最新分配。您可以再添加一个属性,例如 self.All_Engines,它会输出火箭上使用的引擎的完整列表。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。