Как напечатать «конкретный» элемент в списке (не весь список) без скобок и кавычек при печати методом класса?

#python #list #class-method

Вопрос:

Я пытаюсь распечатать «конкретный» элемент из списка, используя приведенный ниже код. При печати переменной экземпляра класса 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
 

Ответ №1:

Вы можете использовать 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
 

Ответ №2:

 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=['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.Rocket_name,"nEngine:",self.Engine[-1],"nStages:",self.Stages,"nCompany Name:",self.Company_Name,"nCEO:",self.CEO,"nHeadquarters:",self.Headquarters,"nEstablished:",self.Established))
 

Я предполагаю, что причина, по которой у вас есть движок в виде списка, заключается в том, что вы ожидаете, что движок со временем изменится. Если это логика, то приведенный выше код выведет самое последнее присвоение имени движка. Вы могли бы добавить еще один атрибут, например «я».All_Engines, которые выводили бы все списки двигателей, которые использовались на ракете.