Caso ainda não tenha feito o Desafio 4 – Clique Aqui
Descrição do Desafio:
Acabei de ver meu errinho de português kkk portifólio 🙂
Você vai construir um programa em Python que simula uma locadora simples. O usuário poderá:
- Ver o Portfólio;
- Alugar um carro por x número de dias;
- Devolver o carroalugado.
Regras:
Você deve usar um dicionário
em Python para guardar os itens disponíveis e o preço por dia.
Crie um menu interativo no terminal, com as seguintes opções:
- Mostrar Portifólio
- Alugar um carro
- Devolver um carro
Exemplo de funções para organizar o código:
mostrar_portifolio()
alugar_um_carro()
devolver_um_carro()
tela()
O carro alugado deve ser removido da lista de carros e adicionado a uma nova lista chamada carros_alugados
.
Ao devolver, o item deve voltar para os disponíveis.
Use try/except
para tratar entradas inválidas (ex: letras onde deveria ser número).
Exiba o valor total do aluguel com base no número de dias.
Exemplo de execução:
Tela Inicial

Mostrar portifólio

Alugar um carro



Devolver um Carro


Resultado
import os
import sys
carros = {
"Fiat Mobi": 95.00,
"Chevrolet Onix": 120.00,
"Volkswagen Gol": 110.00,
"Hyundai HB20": 130.00,
"Toyota Corolla": 180.00,
"Honda Civic": 185.00,
"Renault Kwid": 90.00,
"Jeep Renegade": 200.00,
"Chevrolet Tracker": 210.00,
"Toyota Hilux": 250.00,
"Volkswagen T-Cross": 220.00,
"Fiat Toro": 240.00,
"Nissan Kicks": 190.00,
"Hyundai Creta": 200.00,
"Ford Ka": 100.00
}
carros_alugados = {}
def mostrar_portifolio(lista_carros):
os.system("cls")
for index, (carros, valores) in enumerate(lista_carros.items()):
print(f"[{index}] {carros} - R$ {valores:.0f} /dia")
def alugar_um_carro(lista_carros, lista_carros_alugados):
print ("[ ALUGAR ] Dê uma olhada em nosso portifólio.\n")
mostrar_portifolio(lista_carros)
while True:
try:
codigo_do_carro = int(input("\nEscolha o código do carro:\n"))
if codigo_do_carro not in range(len(lista_carros)+1):
print(f"Digite um número de 0 a {len(lista_carros)}")
continue
except ValueError:
print("Você digitou uma letra, por favor digite o código do carro\n")
continue
while True:
try:
dia = int(input("\nEscolha por quantos dias deseja alugar:\n"))
break
except ValueError:
print("Você digitou uma letra, por favor digite o total de dias\n")
continue
nome_carro, preco_diaria = list(lista_carros.items())[codigo_do_carro]
valor_total = dia*preco_diaria
os.system("cls")
print(f"\nVocê escolheu {nome_carro} por {dia} dias.\n")
print(f"O aluguel totalizaria R$ {valor_total}. Deseja Alugar?\n")
while True:
try:
vou_alugar = int(input("0 - SIM | 1 - NÃO\n"))
if vou_alugar not in range(2):
print(f"Digite 0 para ALUGAR ou 1 para NÃO ALUGAR\n")
continue
elif vou_alugar == 0:
os.system("cls")
print(f"Parabéns você alugou o {nome_carro} por {dia} dias.\n")
retirar_portifolio(nome_carro, preco_diaria, lista_carros, lista_carros_alugados)
acesso()
else:
acesso()
except ValueError:
print("Você digitou uma letra, por favor digite 0 ou 1\n")
continue
def retirar_portifolio(nome_do_carro, valor_do_carro, lista_carros, lista_carros_alugados):
lista_carros.pop(nome_do_carro)
lista_carros_alugados.update({nome_do_carro:valor_do_carro})
def devolver_um_carro(lista_carros, lista_de_carros_alugados):
os.system("cls")
if len(lista_de_carros_alugados) == 0:
print("Nenhum carro foi alugado\n")
acesso()
print(f"Segue a lista de carros alugados. Qual você deseja devolver?")
for index, (carros, valores) in enumerate(lista_de_carros_alugados.items()):
print(f"[{index}] {carros} - R$ {valores:.0f} /dia")
while True:
try:
codigo_do_carro = int(input("\nEscolha o código do carro que deseja devolver:\n"))
if codigo_do_carro not in range(len(lista_de_carros_alugados)+1):
print(f"Digite um número de 0 a {len(lista_de_carros_alugados)}")
continue
else:
break
except ValueError:
print("Você digitou uma letra, por favor digite o código do carro\n")
continue
nome_carro, preco_diaria = list(lista_de_carros_alugados.items())[codigo_do_carro]
lista_carros.update({nome_carro:preco_diaria})
lista_de_carros_alugados.pop(nome_carro)
os.system("cls")
print(f"Obrigado por devolver o carro {nome_carro}\n")
acesso()
def acesso():
print("\n=========\n")
while True:
try:
print("\nVocê deseja continuar ou sair?")
saida = int(input("0 - CONTINUAR | 1 - SAIR\n"))
if saida not in range(2):
continue
elif saida == 0:
tela()
else:
sys.exit()
except ValueError:
print("\nDigite 0 para continuar ou 1 para sair")
continue
def tela():
while True:
os.system("cls")
print("===========\n")
print("Bem vindo à locadora de carros!\n")
print("===========\n")
print("O que você deseja fazer?\n")
try:
fazer = int(input("0 - Mostrar portifólio | 1 - Alugar um carro | 2 - Devolver um carro\n"))
if fazer not in range(3):
print("Digite um valor de 0 a 2")
continue
except ValueError:
print("Digite um número de 0 a 2")
continue
if fazer == 0:
mostrar_portifolio(carros)
acesso()
elif fazer == 1:
alugar_um_carro(carros, carros_alugados)
acesso()
else:
devolver_um_carro(carros, carros_alugados)
tela()