CINEMA EM PYTHON (DESAFIO #2)
SITUAÇÃO PROBLEMA DO CINEMA
Como proprietária de um cinema, enfrento problemas com reservas de assentos incorretas e gestão ineficiente de ingressos durante horários de pico. Preciso de um programa para permitir aos clientes reservarem assentos precisos e personalizados, melhorando a experiência do cliente e a eficiência operacional.
REQUISITOS DO PROGRAMA DO CINEMA
- O programa deve ser desenvolvido em python;
- O programa deve conter 5 filmes disponíveis;
- Em cada filme, será possível escolher um assento de 1 a 20;
- Deve informar o valor do ingresso de acordo com a quantidade de assentos;
- Ao final do pedido perguntar qual forma de pagamento (Pix, dinheiro, cartão);
- Quando o pedido for concluído, gerar uma nota fiscal com os detalhes do pedido.
ENTRADAS
- Qual o filme escolhido?
- Qual o(s) assento(s) escolhido(s)?
- Qual a forma de pagamento?
FUNÇÃO EXIBIR FILMES
def exibir_filmes():
filmes = {
1: "Filme A",
2: "Filme B",
3: "Filme C",
4: "Filme D",
5: "Filme E"
}
print("Filmes disponíveis:")
for numero, nome in filmes.items():
print(f"{numero}. {nome}")
return filmes
FUNÇÃO ESCOLHER FILME
def escolher_filme(filmes):
while True:
try:
escolha_filme = int(input("Escolha o número do filme (1-5): "))
if escolha_filme < 1 or escolha_filme > 5:
print("Número de filme inválido. Tente novamente.")
continue
return filmes[escolha_filme]
except ValueError:
print("Entrada inválida. Tente novamente.")
FUNÇÃO CALCULAR VALORES ASSENTOS
def calcular_valor_assentos(quantidade_assentos):
preco_por_assento = 15.0 # Valor do ingresso por assento
return preco_por_assento * quantidade_assentos
FUNÇÃO GERAR NOTA FISCAL
def gerar_nota_fiscal(filme, assentos, valor_total, pagamento):
nota = (
f"--- NOTA FISCAL ---\n"
f"Filme: {filme}\n"
f"Assentos: {', '.join(map(str, assentos))}\n"
f"Valor Total: R$ {valor_total:.2f}\n"
f"Forma de Pagamento: {pagamento}\n"
f"--------------------"
)
print(nota)
FUNÇÃO ESCOLHER ASSENTOS
def escolher_assentos():
while True:
try:
assentos = input("Digite os números dos assentos escolhidos (1-20), separados por vírgula: ")
assentos = list(map(int, assentos.split(',')))
assentos_validos = True
assentos_ja_escolhidos = []
for assento in assentos:
if assento < 1 or assento > 20:
print("Número de assento inválido. Tente novamente.")
assentos_validos = False
break
if assento in assentos_ja_escolhidos:
print("Você não pode escolher assentos duplicados. Tente novamente.")
assentos_validos = False
break
assentos_ja_escolhidos.append(assento)
if assentos_validos:
return assentos
except ValueError:
print("Entrada inválida. Tente novamente.")
FUNÇÃO ESCOLHER FORMA DE PAGAMENTO
def escolher_forma_pagamento():
while True:
pagamento = input("Escolha a forma de pagamento (Pix, dinheiro, cartão): ").strip().lower()
if pagamento not in ['pix', 'dinheiro', 'cartão']:
print("Forma de pagamento inválida. Tente novamente.")
continue
return pagamento.capitalize()
FUNÇÃO MAIN
def main():
filmes = exibir_filmes()
filme_escolhido = escolher_filme(filmes)
assentos = escolher_assentos()
quantidade_assentos = len(assentos)
valor_total = calcular_valor_assentos(quantidade_assentos)
pagamento = escolher_forma_pagamento()
gerar_nota_fiscal(filme_escolhido, assentos, valor_total, pagamento)
print("Reserva concluída com sucesso!")
if __name__ == "__main__":
main()
Caso o Python ainda não esteja instalado em seu dispositivo, clique no botão abaixo para realizar a instalação.