Junincss / Aulas-Infinnity

Aulas de python minhas soluções
0 stars 0 forks source link

CODIGO-DESAFIO-FATURA #1

Open Junincss opened 10 months ago

Junincss commented 10 months ago

import time """ Crie uma classe chamada Fatura que possa ser utilizada por uma loja de suprimentos de informática para representar uma fatura de um item vendido na loja. Uma fatura deve incluir as seguintes informações como atributos:

- O nome do item;
- O preço unitário do item;
- A Quantidade de item a ser faturada;
- Valor total da fatura;

Sua classe deve ter um construtor que inicialize todos os atributos menos o valor total da fatura. Além disso, forneça um método chamado gerar_fatura que calcula o valor da fatura (isto é, multiplicar a quantidade pelo preço por item).

""" row = ("------------------------------") jump_row = "\n" class Invoice: def init(self): self.bag = {} while True:

        self.total_amount_invoice = 0
        print(row)
        self.option = int(input("\nInforme a operação que deseja realizar \n1- Gerar fatura\n"+ "\n2- Adicionar Item\n"+"\n3- Visualizar itens\n"+"\n4- Sair\n"))
        print(row)
        match self.option:
            case 1 :
                self.generate_invoice()
            case 2 :
                self.add_item()
            case 3 :
                self.view_items()
            case 4:
                print("Encerrando aplicação!")
                time.sleep(1)
                break
            case _ :
                print("OPERACAO INVÁLIDA")

#método de adicionar um item, todos os itens serão adicionados a sacola.
def add_item(self):
    self.item = input("Insira o nome do item:  ")
    self.itemPrice = float(input("Insira o valor do item:  "))
    self.qntItem = int(input("Insira a quantidade que deseja levar: "))

    self.items ={
        "Item": self.item,
        "Preço": self.itemPrice,
        "Quantidade": self.qntItem,
    }

    self.bag[self.item] = self.items

def generate_invoice(self):
    # verificando se há itens dentro da sacola para poder mostrar
    if self.bag.__len__() <= 0:
        print("Sacola vazia!")
        print(row)
        time.sleep(1)
        print(jump_row*15)
    else: # iterando sobre os itens da sacola  e mostrando cada 1 deles.
        print(f"Id -- Item ----------- Quantidade ---------- Valor Unitário\n")
        id = 0
        for x,y in self.bag.items(): #nesse print optei por tentar reduzir o nome do item para deixar um pouco mais visível.
            id +=1
            print(f"{id}º | {y['Item'][0:5]} ----------- {y['Quantidade']} ---------- {y['Preço']}R$\n"
              )

        # gerando o valor total dos itens dentro do dicionario.
        for x, y in self.bag.items():
            quant = y['Quantidade']
            partial_value = y['Preço']
            unitary_value = quant * partial_value
            self.total_amount_invoice += unitary_value

        print(f"Valor total ---------- {self.total_amount_invoice:.2f}R$")

def view_items(self):
    # verificando se há itens dentro da sacola para poder mostrar
    if self.bag.__len__() <= 0:
        print(row)
        print("Aqui está sua sacola:\nId--Item ------------------- Quantidade\n")
        print("__________________Sacola vazia!__________________")
        time.sleep(1)
        print(jump_row*25)
    else: # iterando sobre os itens da sacola  e mostrando cada 1 deles.
        id = 0
        print(row)
        print("Aqui está sua sacola:\nId--Item ------------------- Quantidade\n")
        for item,x in self.bag.items(): 
            id+=1
            print(f"{id}º | {x['Item']}-------------------{x['Quantidade']}") # nesse print optei por deixar mais detalhado, caso o usuário deseje ver os itens.
        print(jump_row*10)
        print("Caso Deseje ver seus itens, role o mouse para cima ^")
        print("                                                   |")
        print(row)

invoice1 = Invoice()