Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[Projeto] Praticando as atividades

Realizei as atividades, ficou bem diferente, talvez por minha falha na interpretação de texto, mas vale observar que testei o str antes dos nomes ao invés de criar def para __str__ e deu certo, misturei os exercícios 2, 3 e 4 junto, espero ter entendido a questão

criei uma def de pular, para facilitar a visualização dos testes dos 1 ao 4

Curioso que no ex 5, não deu certo nos valores int e float, provavelmente pela estrutura do código, que não tem lista e função para mostrar a lista, como está nos exercícios anteriores.

#   E   X   E   R   C   Í   C   I   O   S

#1. Implemente uma classe chamada Carro com os atributos básicos, como modelo, cor e ano. Crie uma instância dessa classe e atribua valores aos seus atributos.

def pula_linha():
    print('\n\n')

class Carro:
    lista_de_carros = []

    def __init__(self, modelo, cor, ano):
        self.modelo = str(modelo)
        self.cor = str(cor)
        self.ano = int(ano)
        Carro.lista_de_carros.append(self)
    
    def mostrar_carro():
        for c in Carro.lista_de_carros:
            print(f'{c.modelo} | {c.cor} | {c.ano}')

corsinha = Carro('Corsa', 'Preto', 2010)
uno_quadrado = Carro('Uno', 'Branco', 1995)

Carro.mostrar_carro()
pula_linha()
    

#2/3/4. Crie uma classe chamada Restaurante com os atributos nome, categoria, ativo e crie mais 2 atributos. Instancie um restaurante e atribua valores aos seus atributos.

class Restaurante:
    restaurantes = []
    
    def __init__(self, nome, categoria, capacidade, prato_principal, ativo=False):
        self.nome = str(nome)
        self.categoria = str(categoria)
        self.capacidade = int(capacidade)
        self.prato_principal = str(prato_principal)
        self.ativo = ativo
        Restaurante.restaurantes.append(self)
    
    def listar_restaurantes():
        for r in Restaurante.restaurantes:
            print(f'{r.nome} | {r.categoria} | {r.capacidade} | {r.prato_principal} {r.ativo}')

na_quebrada = Restaurante('Na Quebrada', 'Lanche', 35, 'Maloka', ativo=True)

Restaurante.listar_restaurantes()
pula_linha()


#5. Crie uma classe chamada Cliente e pense em 4 atributos. Em seguida, instancie 3 objetos desta classe e atribua valores aos seus atributos através de um método construtor.

class Cliente:
    def __init__(self, nome, idade, nacionalidade, altura):
        self.nome = nome
        self.idade = int(idade)
        self.nacionalidade = nacionalidade
        self.altura = float(altura)

    def __str__(self):
        return f'{self.nome} | {self.nacionalidade}'


pessoa1 = Cliente('Carlos', 25, 'Brasileiro', 1.85)
pessoa2 = Cliente('Marcia', 32, 'Argentina', 1.69)
3 respostas
solução!

Olá, Gabriel.

Tudo bem?

Muito obrigado por compartilhar o seu código aqui com a gente. Vou tentar te ajudar com algumas observações e sugestões para melhorar seu código e tentar resolver os problemas que você mencionou.

Exercício 1: Classe Carro

Seu código para a classe Carro está bem estruturado. A única sugestão que tenho é adicionar o método especial __str__ para facilitar a exibição das informações do carro, conforme solicitado no exercício 4.

class Carro:
    lista_de_carros = []

    def __init__(self, modelo, cor, ano):
        self.modelo = str(modelo)
        self.cor = str(cor)
        self.ano = int(ano)
        Carro.lista_de_carros.append(self)
    
    def __str__(self):
        return f'{self.modelo} | {self.cor} | {self.ano}'

    @classmethod
    def mostrar_carro(cls):
        for c in cls.lista_de_carros:
            print(c)

corsinha = Carro('Corsa', 'Preto', 2010)
uno_quadrado = Carro('Uno', 'Branco', 1995)

Carro.mostrar_carro()
pula_linha()

Exercícios 2, 3 e 4: Classe Restaurante

Você combinou os exercícios e fez um bom trabalho. Apenas adicionei o método especial __str__ para a classe Restaurante.

class Restaurante:
    restaurantes = []
    
    def __init__(self, nome, categoria, capacidade, prato_principal, ativo=False):
        self.nome = str(nome)
        self.categoria = str(categoria)
        self.capacidade = int(capacidade)
        self.prato_principal = str(prato_principal)
        self.ativo = ativo
        Restaurante.restaurantes.append(self)
    
    def __str__(self):
        return f'{self.nome} | {self.categoria}'

    @classmethod
    def listar_restaurantes(cls):
        for r in cls.restaurantes:
            print(r)

na_quebrada = Restaurante('Na Quebrada', 'Lanche', 35, 'Maloka', ativo=True)

Restaurante.listar_restaurantes()
pula_linha()

Exercício 5: Classe Cliente

Seu código para a classe Cliente está quase correto. Você mencionou que teve problemas com valores int e float. Certifique-se de que os valores passados para o construtor são do tipo correto.

class Cliente:
    def __init__(self, nome, idade, nacionalidade, altura):
        self.nome = nome
        self.idade = int(idade)
        self.nacionalidade = nacionalidade
        self.altura = float(altura)

    def __str__(self):
        return f'{self.nome} | {self.nacionalidade}'

pessoa1 = Cliente('Carlos', 25, 'Brasileiro', 1.85)
pessoa2 = Cliente('Marcia', 32, 'Argentina', 1.69)
pessoa3 = Cliente('John', 45, 'Americano', 1.75)

print(pessoa1)
print(pessoa2)
print(pessoa3)

Espero que essas sugestões ajudem a resolver os problemas que você encontrou. Continue praticando e evoluindo. Parabéns por praticar :)

Veja se faz sentido e aplique em seu código.

Espero ter ajudado. Qualquer dúvida manda aqui de novo. Bons estudos.

Deu certo, muito obrigado, só tenho uma dúvida: ao testar as prints e funções eles estão puxando somente o que está dentro do str, não puxa o que está fora, imagino que o dados esteja sendo armazenado, mas não demonstrado. Eu coloquei o print(c) e print(r) que você demonstrou, mas no caso, para mostrar todas as informações, precisaria colocar de volta a print format com todas os argumentos, certo?

Olá novamente Gabriel.

Que bom que deu certo! Sim, a sua interpretação está correta. O método especial str é utilizado quando você quer definir uma representação em forma de string de um objeto, que será usada, por exemplo, quando você chama print(objeto). Se você quer mostrar mais informações, você pode ajustar a função str para incluir todos os atributos que você deseja exibir.