2
respostas

Não conseguindo aplicar o desconto para prato e bebidas

arquivo item_cardapio.py

from abc import ABC, abstractmethod

class ItemCardapio(ABC):
    def __init__(self, name, price=float):
        self._name = name
        self._price = price

    @abstractmethod
    def aplicar_desconto(self):
        pass

arquivo prato.py

class Prato(ItemCardapio):
    def __init__(self, name, description, price):
        super().__init__(name, price)
        self._description = description

    def __str__(self):
        return self._name

    def aplicar_desconto(self):
        self._price -= (self._price * 0.05)

arquivo app.py

from models.restaurant import Restaurant
from models.cardapio.bebidas import Bebida
from models.cardapio.prato import Prato

restaurant_praca = Restaurant('praça', 'Gourmet')
bebida_suco = Bebida('Melancia', 5, 'grande')
bebida_suco.aplicar_desconto()
prato_pao = Prato('Pão', 2, 'O melhor pão da cidade')
prato_pao.aplicar_desconto()

def main():
    pass

if __name__ == '__main__':
    main()

Erro que está aparecendo no terminal:

TypeError: can't multiply sequence by non-int of type 'float'

2 respostas

O erro ocorre porque você está tentando multiplicar uma sequência (uma string, no caso) pelo desconto, que é um float, no método aplicar_desconto da classe Prato. Para corrigir isso, você precisa garantir que o preço seja tratado como um número (float) ao realizar a multiplicação.

Aqui está uma correção para o método aplicar_desconto na classe Prato:

class Prato(ItemCardapio):
    def __init__(self, name, description, price):
        super().__init__(name, price)
        self._description = description

    def __str__(self):
        return self._name

    def aplicar_desconto(self):
        self._price -= (self._price * 0.05)
        # Certifique-se de que o preço não seja negativo
        self._price = max(0, self._price)

Além disso, há um problema no arquivo app.py onde você está importando Bebida, mas não parece haver uma classe Bebida definida. Certifique-se de que a classe Bebida esteja definida corretamente no seu código.

Depois de fazer essas correções, o código deve funcionar corretamente. Certifique-se de que todas as dependências e classes estejam importadas corretamente em seus arquivos.

Valeu Carlos!