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

Queria uma sugestão no exercicio ...

Queria saber no que eu poderia melhorar o meu código, e queria ajuda na função que eu criei de validar a avaliação, para que quando o usuário digitar alguma letra, o programa não acabe de uma vez.

class Restaurante:
    def __init__ (self, nome, categoria, avaliacao, drive):
        self.nome = nome
        self.categoria = categoria
        self.ativo = False
        self.avaliacao = avaliacao
        self.drive_thru = drive

    def __str__(self):
        yes_or_no = 'possui' if self.drive_thru == True else 'não possui'
        return f'O nome do restaurante é {self.nome}, da categoria {self.categoria}, com avaliação de {self.avaliacao} estrelas e {yes_or_no} drive thru'

restaurante_laches = Restaurante('Casa Amarela', 'Comida caseira', 5 , False)
print(restaurante_laches)

"""
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, pedido, gorjeta, bebida ,avaliacao):
        self.pedido = pedido
        self.gorjeta = gorjeta
        self.bebida = bebida
        self.avaliacao = self.validar_avaliacao(avaliacao)

    def validar_avaliacao (self,avaliacao):
        while avaliacao < 0 or avaliacao > 5:
            print('Não foi possivel avaliar.')
            avaliacao = float(input('Digite um número entre 0 e 5 para a avaliação do restaurante: '))
        return avaliacao
    
    def __str__ (self):
        return f'O cliente fez um pedido de {self.pedido}, com {self.bebida} para acompanhar. Deu R${self.gorjeta} de gorjeta e uma avaliação de {self.avaliacao} estrelas.'
    

cliente_1 = Cliente('Arroz e bife', 10.50, 'Coca', 5)
print(cliente_1)
cliente_2 = Cliente('Lasanha', 5, 'Fanta Uva', 3)
print(cliente_2)
cliente_3 = Cliente('Coxinha', 21, 'Cerveja', 4.5)
print(cliente_3)
2 respostas
solução!

Olá, Matheus! Como vai?

Para isso, você pode utilizar um bloco try/except para capturar erros. No caso, você quer capturar um ValueError, que é o erro lançado quando uma função recebe um argumento do tipo correto, mas com um valor inadequado. Aqui está um exemplo de como você pode fazer isso:

def validar_avaliacao(self, avaliacao):
    while True:
        try:
            avaliacao = float(avaliacao)
            if 0 <= avaliacao <= 5:
                return avaliacao
            else:
                print('Não foi possível avaliar.')
                avaliacao = input('Digite um número entre 0 e 5 para a avaliação do restaurante: ')
        except ValueError:
            print('Valor inválido.')
            avaliacao = input('Digite um número entre 0 e 5 para a avaliação do restaurante: ')

Neste exemplo, o código tenta converter a avaliação para um float. Se for bem-sucedido e o valor estiver entre 0 e 5, ele retorna a avaliação. Se o valor não estiver entre 0 e 5, ele imprime uma mensagem de erro e pede ao usuário para inserir um novo valor.

Agora, caso a conversão para float falhar (por exemplo, se o usuário inserir uma letra), ele captura o ValueError, imprime uma mensagem de erro e pede ao usuário para inserir um novo valor.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Conteúdo riquíssimo desse post! Me ajudou muito a expandir meu entendimento de POO.