#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.
class Carro: lista_carro = []
def __init__(self, modelo: str, cor: str, ano: int):
# Validações básicas
if not isinstance(modelo, str) or not modelo:
raise ValueError("O modelo deve ser uma string não vazia.")
if not isinstance(cor, str) or not cor:
raise ValueError("A cor deve ser uma string não vazia.")
if not isinstance(ano, int) or ano <= 1885: # O ano não pode ser anterior à invenção do carro
raise ValueError("Ano inválido.")
self.modelo = modelo
self.cor = cor
self.ano = ano
Carro.lista_carro.append(self)
def __str__(self):
return f'Modelo: {self.modelo.ljust(20)} | Cor: {self.cor.ljust(15)} | Ano: {str(self.ano).ljust(4)}'
@staticmethod
def listar_carros():
'''Exibe o índice e todas as informações dos carros cadastrados'''
if not Carro.lista_carro:
print("Nenhum carro cadastrado.")
else:
for indice, carro in enumerate(Carro.lista_carro, start=1): # Começa do 1 para facilitar a leitura
print(f'{indice}. {carro}')
#Instanciando carros carro_ferrari = Carro('Ferrari', 'Amarelo', 2012) carro_tesla = Carro('Tesla Model S', 'Preto', 2020)
#Listando carros cadastrados Carro.listar_carros()
#2.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:
lista_restaurantes = []
#3.Modifique a classe Restaurante adicionando um construtor que aceita nome e categoria como parâmetros e inicia ativo como False por padrão. Crie uma instância utilizando o construtor.
def __init__(self, nome: str, categoria: str, cidade: str, bairro: str, ativo: bool = False):
self.nome = nome
self.categoria = categoria
self.cidade = cidade
self.bairro = bairro
self.ativo = ativo
Restaurante.lista_restaurantes.append(self)
#4.Adicione um método especial str à classe Restaurante para que, ao imprimir uma instância, seja exibida uma mensagem formatada com o nome e a categoria. Exiba essa mensagem para uma instância de restaurante.
def __str__(self):
return f'Nome : {self.nome.ljust(10)} | Categoria: {self.categoria.ljust(10)} | Cidade: {self.cidade.ljust(10)} | Bairro: {self.bairro.ljust(10)} | Ativo: {self.ativo}'
def ativar(self):
self.ativo = True # Altera o valor de ativo para True
def desativar(self):
self.ativo = False # Altera o valor de ativo para False
@staticmethod
def listar_restaurantes():
for indice, restaurante in enumerate(Restaurante.lista_restaurantes, start=1):
print(f'- {indice}.{restaurante}')
restaurante_matsu = Restaurante('Matsu', 'Japonesa', 'São Paulo', 'Tatuape', True) restaurante_alibabo = Restaurante('Alibabo', 'Arabi', 'São Paulo', 'Belém')
#For Debug #print(type(restaurante_alibabo))
Restaurante.listar_restaurantes()
#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:
lista_de_clientes = []
def __init__(self, nome: str, nacionalidade: str, empresa: str, bairro: str):
if not isinstance(nome, str) or not nome:
print('O nome deve ser uma string não vazia.')
if not isinstance(nacionalidade, str) or not nacionalidade:
print('A nacionalidade deve ser uma string não vazia.')
if not isinstance(empresa, str) or not empresa:
print('A empresa deve ser uma string não vazia.')
if not isinstance(bairro, str) or not bairro:
print('O bairro deve ser uma string não vazia.')
self.nome = nome
self.nacionalidade = nacionalidade
self.empresa = empresa
self.bairro = bairro
Cliente.lista_de_clientes.append(self)
def __str__(self):
return f'Nome: {self.nome.ljust(15)} | Nacionalidade: {self.nacionalidade.ljust(10)} | self.Empresa: {self.empresa.ljust(10)} | Bairro: {self.bairro}'
@staticmethod
def listar_clientes():
for indice, cliente in enumerate(Cliente.lista_de_clientes, start=1):
print(f'{indice}. {cliente}')
cliente1 = Cliente('Machado', 'Brasileira', 'Winner Levels', 'Analia Franco') cliente2 = Cliente('Martelo', 'Colombiana', 'Maricas', 'Cartajena')
Cliente.listar_clientes()