-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMoveUp-codigo.py
More file actions
842 lines (612 loc) · 21.4 KB
/
Copy pathMoveUp-codigo.py
File metadata and controls
842 lines (612 loc) · 21.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
# Sistema SoulUp - Pontos para Transporte Publico
# Challenge FIAP 2026
# Integrantes: (Eduardo Damasio rm569960, Andre luiz rm572203, Milena Silva rm568923, Isabelle Ferreira rm573507, Marina Fernandes rm 571265)
# Move UP
# listas para guardar os dados
usuarios = []
viagens = []
vouchers = []
# constantes
PONTOS_PARA_UM_REAL = 111
CO2_CARRO = 0.21
CO2_ONIBUS = 0.05
# tipos de transporte e seus precos (tuplas)
tipos = ("Onibus", "Metro", "Trem")
precos = (6.35, 5.40, 5.40)
# funcao para mostrar o menu
# matriz com os menus e submenus
menus = [
["Usuário", "Cadastrar Usuário", "Buscar Usuário", "Alterar Usuário", "Excluir Usuário"],
["Viagens", "Registrar Viagem", "Visualizar Viagens"],
["Pontos", "Visualizar Pontos", "Converter Pontos"],
["Missão", "Calcular CO2", "Ver impacto ambiental", "Atividade sustentável"],
["Perfil", "Ver perfil"],
["Voucher", "Resgatar passagens", "Ver voucher/passagens"]
]
# função para mostrar o menu principal
def mostrar_menu():
print("\n============ SOULUP ============")
for i in range(len(menus)):
print(f"{i + 1} - {menus[i][0]}")
print("0 - Sair")
print("================================")
# função para mostrar os submenus
def mostrar_submenu(indice):
print(f"\n--- {menus[indice][0]} ---")
for i in range(1, len(menus[indice])):
print(f"{i} - {menus[indice][i]}")
print("0 - Voltar")
def menu_usuario():
opcao = ""
while opcao != "0":
mostrar_submenu(0)
opcao = input("Escolha uma opção: ")
match opcao:
case "1":
print("\nCadastro de usuário")
cadastrar()
case "2":
consultar_usuario()
case "3":
alterar_usuario()
case "4":
excluir_usuario()
case "0":
print("Voltando ao menu principal...")
case _:
print("Opção inválida!")
def menu_viagens():
opcao = ""
while opcao != "0":
mostrar_submenu(1)
opcao = input("Escolha uma opção: ")
match opcao:
case "1":
registrar_viagem()
case "2":
visualizar_viagens()
case "0":
print("Voltando ao menu principal...")
case _:
print("Opção inválida!")
def menu_pontos():
opcao = ""
while opcao != "0":
mostrar_submenu(2)
opcao = input("Escolha uma opção: ")
match opcao:
case "1":
visualizar_pontos()
case "2":
converter()
case "0":
print("Voltando ao menu principal...")
case _:
print("Opção inválida!")
def menu_missao():
opcao = ""
while opcao != "0":
mostrar_submenu(3)
opcao = input("Escolha uma opção: ")
match opcao:
case "1":
calcular_co2_missao()
case "2":
ver_impacto()
case "3":
atividade_sustentavel()
case "0":
print("Voltando ao menu principal...")
case _:
print("Opção inválida!")
def menu_perfil():
opcao = ""
while opcao != "0":
mostrar_submenu(4)
opcao = input("Escolha uma opção: ")
match opcao:
case "1":
ver_perfil()
case "0":
print("Voltando ao menu principal...")
case _:
print("Opção inválida!")
def menu_voucher():
opcao = ""
while opcao != "0":
mostrar_submenu(5)
opcao = input("Escolha uma opção: ")
match opcao:
case "1":
resgatar_passagem()
case "2":
visualizar_vouchers()
case "0":
print("Voltando ao menu principal...")
case _:
print("Opção inválida!")
# funcao para buscar usuario pelo cpf
def buscar_usuario(cpf):
"""
Busca um usuário na lista pelo CPF.
Parâmetro:
cpf: CPF do usuário que será procurado.
Retorno:
Retorna o dicionário do usuário encontrado.
Retorna None caso o usuário não exista.
"""
for u in usuarios:
if u["cpf"] == cpf:
return u
return None
# função para consultar e mostrar os dados de um usuário
def consultar_usuario():
print("\n--- Buscar Usuário ---")
cpf = input("Digite o CPF do usuário: ")
usuario = buscar_usuario(cpf)
if usuario == None:
print("Usuário não encontrado!")
return
print("\n--- Dados do Usuário ---")
print(f"Nome: {usuario['nome']}")
print(f"CPF: {usuario['cpf']}")
print(f"Pontos: {usuario['pontos']}")
print(f"Crédito: R$ {usuario['credito']:.2f}")
print(f"Viagens realizadas: {usuario['viagens']}")
print(f"KM percorridos: {usuario['km_total']:.1f} km")
# função para alterar os dados de um usuário
def alterar_usuario():
"""
Altera os dados de um usuário cadastrado.
Solicita o CPF para localizar o usuário e permite
alterar seu nome.
"""
print("\n--- Alterar Usuário ---")
try:
cpf = input("Digite o CPF do usuário: ")
usuario = buscar_usuario(cpf)
if usuario == None:
print("Usuário não encontrado!")
return
print(f"\nUsuário encontrado: {usuario['nome']}")
print("Deixe vazio caso não queira alterar o campo.")
novo_nome = input("Novo nome: ")
if novo_nome != "":
usuario["nome"] = novo_nome
except Exception as erro:
print(f"Erro ao alterar usuário: {erro}")
else:
print(f"\nUsuário {usuario['nome']} alterado com sucesso!")
finally:
print("Operação de alteração finalizada.")
# função para excluir um usuário
def excluir_usuario():
"""
Exclui um usuário cadastrado.
Solicita o CPF para localizar o usuário e pede
confirmação antes de realizar a exclusão.
"""
print("\n--- Excluir Usuário ---")
try:
cpf = input("Digite o CPF do usuário: ")
usuario = buscar_usuario(cpf)
if usuario == None:
print("Usuário não encontrado!")
return
print(f"\nUsuário encontrado: {usuario['nome']}")
confirmar = input("Tem certeza que deseja excluir? (S/N): ")
if confirmar.upper() == "S":
usuarios.remove(usuario)
else:
print("Exclusão cancelada!")
return
except ValueError:
print("Erro: não foi possível excluir o usuário!")
except Exception as erro:
print(f"Erro ao excluir usuário: {erro}")
else:
print("Usuário excluído com sucesso!")
finally:
print("Operação de exclusão finalizada.")
# funcao 1 - cadastrar usuario
def cadastrar():
"""
Cadastra um novo usuário no sistema.
Solicita nome, CPF e quantidade de pontos.
Valida os dados informados e adiciona o usuário
na lista de usuários.
"""
print("\n--- Cadastro de Usuário ---")
try:
nome = input("Digite seu nome: ")
while nome == "":
print("Nome não pode ser vazio!")
nome = input("Digite seu nome: ")
cpf = input("Digite seu CPF (11 números): ")
while len(cpf) != 11 or cpf.isdigit() == False:
print("CPF inválido! Digite 11 números.")
cpf = input("Digite seu CPF (11 números): ")
if buscar_usuario(cpf) != None:
print("Este CPF já está cadastrado!")
return
pontos_digitados = input("Quantos pontos você tem no app? (0 se não tiver): ")
while pontos_digitados.isdigit() == False:
print("Digite apenas números!")
pontos_digitados = input("Quantos pontos você tem no app? ")
pontos = int(pontos_digitados)
novo = {
"nome": nome,
"cpf": cpf,
"pontos": pontos,
"credito": 0.0,
"viagens": 0,
"km_total": 0.0
}
usuarios.append(novo)
except ValueError:
print("Erro: valor informado inválido!")
except Exception as erro:
print(f"Erro ao cadastrar usuário: {erro}")
else:
print(f"\nUsuário {nome} cadastrado com sucesso!")
print(f"Pontos disponíveis: {pontos}")
finally:
print("Operação de cadastro finalizada.")
# funcao para calcular co2 evitado
def calcular_co2(km):
"""
Calcula a quantidade de CO2 evitada ao utilizar transporte público.
Parâmetro:
km: distância percorrida em quilômetros.
Retorno:
Retorna a quantidade de CO2 evitada em kg.
"""
resultado = (CO2_CARRO - CO2_ONIBUS) * km
return resultado
def calcular_co2_missao():
"""
Calcula a quantidade de CO2 evitada pelo usuário.
Solicita a distância percorrida em quilômetros
e utiliza a função de cálculo de CO2 para
determinar a quantidade evitada.
"""
print("\n--- Calcular CO2 ---")
km_digitado = input("Digite a distância percorrida em km: ")
while True:
try:
km = float(km_digitado)
if km > 0:
break
print("A distância deve ser maior que zero!")
km_digitado = input("Digite a distância em km: ")
except:
print("Digite um número válido!")
km_digitado = input("Digite a distância em km: ")
co2 = calcular_co2(km)
print(f"\nDistância percorrida: {km:.1f} km")
print(f"CO2 evitado: {co2:.3f} kg")
def atividade_sustentavel():
"""
Registra uma atividade sustentável realizada pelo usuário.
Solicita o CPF, o tipo de transporte e a atividade
realizada. A quantidade de pontos gerados depende
do tipo de atividade informada.
"""
print("\n--- Atividade Sustentável ---")
cpf = input("Digite seu CPF: ")
usuario = buscar_usuario(cpf)
if usuario == None:
print("Usuário não encontrado!")
return
print("\nTipos de transporte:")
print("1 - Ônibus")
print("2 - Metrô")
print("3 - Trem")
transporte = input("Escolha o transporte utilizado: ")
while transporte not in ("1", "2", "3"):
print("Opção inválida!")
transporte = input("Escolha o transporte utilizado: ")
print("\nTipo de atividade:")
print("1 - Foto")
print("2 - Vídeo")
atividade = input("Escolha o tipo de atividade: ")
while atividade not in ("1", "2"):
print("Opção inválida!")
atividade = input("Escolha o tipo de atividade: ")
if atividade == "1":
pontos = 50
tipo_atividade = "Foto"
else:
pontos = 100
tipo_atividade = "Vídeo"
usuario["pontos"] = usuario["pontos"] + pontos
print("\nAtividade registrada com sucesso!")
print(f"Usuário: {usuario['nome']}")
print(f"Transporte: {tipos[int(transporte) - 1]}")
print(f"Atividade: {tipo_atividade}")
print(f"Pontos recebidos: {pontos}")
print(f"Total de pontos: {usuario['pontos']}")
def resgatar_passagem():
"""
Permite ao usuário resgatar uma passagem utilizando seus pontos.
Solicita o CPF do usuário e o tipo de transporte desejado.
Verifica a quantidade de pontos disponível, calcula o custo
da passagem em pontos e registra o voucher do usuário.
"""
print("\n--- Resgatar Passagem ---")
cpf = input("Digite seu CPF: ")
usuario = buscar_usuario(cpf)
if usuario == None:
print("Usuário não encontrado!")
return
print(f"\nUsuário: {usuario['nome']}")
print(f"Pontos disponíveis: {usuario['pontos']}")
print(f"Taxa: {PONTOS_PARA_UM_REAL} pontos = R$ 1,00")
if usuario["pontos"] < PONTOS_PARA_UM_REAL:
print("Você não possui pontos suficientes para resgatar uma passagem!")
return
print("\nValores das passagens:")
print("1 - Ônibus - R$ 6,35")
print("2 - Metrô - R$ 5,40")
print("3 - Trem - R$ 5,40")
escolha = input("Escolha a passagem: ")
while escolha not in ("1", "2", "3"):
print("Opção inválida!")
escolha = input("Escolha a passagem: ")
indice = int(escolha) - 1
tipo = tipos[indice]
preco = precos[indice]
pontos_necessarios = int(preco * PONTOS_PARA_UM_REAL)
print(f"\nPassagem escolhida: {tipo}")
print(f"Valor: R$ {preco:.2f}")
print(f"Pontos necessários: {pontos_necessarios}")
if pontos_necessarios > usuario["pontos"]:
print("Você não possui pontos suficientes!")
return
usuario["pontos"] = usuario["pontos"] - pontos_necessarios
voucher = {
"nome": usuario["nome"],
"cpf": usuario["cpf"],
"tipo": tipo,
"preco": preco,
"pontos": pontos_necessarios
}
vouchers.append(voucher)
print("\nPassagem resgatada com sucesso!")
print(f"Transporte: {tipo}")
print(f"Pontos utilizados: {pontos_necessarios}")
print(f"Pontos restantes: {usuario['pontos']}")
def visualizar_vouchers():
"""
Exibe os vouchers e passagens resgatados pelo usuário.
Solicita o CPF e apresenta os vouchers encontrados
para aquele usuário.
"""
print("\n--- Meus Vouchers ---")
cpf = input("Digite seu CPF: ")
encontrados = []
for voucher in vouchers:
if voucher["cpf"] == cpf:
encontrados.append(voucher)
if len(encontrados) == 0:
print("Nenhum voucher encontrado!")
return
for i, voucher in enumerate(encontrados):
print(f"\nVoucher {i + 1}")
print(f"Usuário: {voucher['nome']}")
print(f"Transporte: {voucher['tipo']}")
print(f"Valor: R$ {voucher['preco']:.2f}")
print(f"Pontos utilizados: {voucher['pontos']}")
# funcao 2 - converter pontos em credito
def converter():
"""
Converte os pontos do usuário em crédito.
Solicita o CPF e a quantidade de pontos que o usuário
deseja converter. O crédito é calculado usando a
quantidade de pontos necessária para cada R$ 1,00.
"""
print("\n--- Converter Pontos ---")
cpf = input("Digite seu CPF: ")
usuario = buscar_usuario(cpf)
if usuario == None:
print("Usuário nao encontrado!")
return
print(f"Olá {usuario['nome']}!")
print(f"Pontos disponíveis: {usuario['pontos']}")
print(f"Crédito atual: R$ {usuario['credito']:.2f}")
print(f"Taxa: {PONTOS_PARA_UM_REAL} pontos = R$ 1,00")
if usuario["pontos"] == 0:
print("Voce não tem pontos para converter!")
return
quantidade = input("Quantos pontos quer converter? ")
while quantidade.isdigit() == False or int(quantidade) <= 0:
print("Digite um número válido!")
quantidade = input("Quantos pontos quer converter? ")
quantidade = int(quantidade)
if quantidade > usuario["pontos"]:
print(f"Voce so tem {usuario['pontos']} pontos!")
return
# faz a conversao
credito_ganho = quantidade / PONTOS_PARA_UM_REAL
usuario["pontos"] = usuario["pontos"] - quantidade
usuario["credito"] = usuario["credito"] + credito_ganho
print(f"\n{quantidade} pontos convertidos em R$ {credito_ganho:.2f}")
print(f"Novo saldo de crédito: R$ {usuario['credito']:.2f}")
def visualizar_pontos():
"""
Exibe a quantidade de pontos e o crédito disponível
para o usuário.
Solicita o CPF, localiza o usuário e apresenta
seus pontos e saldo de crédito.
"""
print("\n--- Visualizar Pontos ---")
cpf = input("Digite seu CPF: ")
usuario = buscar_usuario(cpf)
if usuario == None:
print("Usuário não encontrado!")
return
print(f"\nUsuário: {usuario['nome']}")
print(f"Pontos disponíveis: {usuario['pontos']}")
print(f"Crédito disponível: R$ {usuario['credito']:.2f}")
# funcao 3 - registrar viagem
def registrar_viagem():
"""
Registra uma nova viagem realizada pelo usuário.
Solicita o CPF do usuário, o tipo de transporte,
origem, destino e distância percorrida.
Calcula o CO2 evitado, desconta o valor da passagem
e armazena os dados da viagem.
"""
print("\n--- Registrar Viagem ---")
cpf = input("Digite seu CPF: ")
usuario = buscar_usuario(cpf)
if usuario == None:
print("Usuário não encontrado!")
return
print(f"Usuário: {usuario['nome']}")
print(f"Crédito disponível: R$ {usuario['credito']:.2f}")
if usuario["credito"] <= 0:
print("Sem crédito! Converta seus pontos primeiro.")
return
# mostra os tipos de transporte usando for e enumerate
print("\nTipos de transporte:")
for i, tipo in enumerate(tipos):
print(f"{i + 1} - {tipo} - R$ {precos[i]:.2f}")
escolha = input("Escolha o tipo (1, 2 ou 3): ")
while escolha not in ("1", "2", "3"):
print("Opção inválida!")
escolha = input("Escolha o tipo (1, 2 ou 3): ")
escolha = int(escolha) - 1
tipo_escolhido = tipos[escolha]
preco = precos[escolha]
if preco > usuario["credito"]:
print(f"Crédito insuficiente! Você tem R$ {usuario['credito']:.2f}")
return
origem = input("Origem: ")
while origem == "":
print("Origem não pode ser vazia!")
origem = input("Origem: ")
destino = input("Destino: ")
while destino == "":
print("Destino não pode ser vazio!")
destino = input("Destino: ")
km_digitado = input("Distância em km: ")
while True:
try:
km = float(km_digitado)
if km > 0:
break
print("Distância deve ser maior que zero!")
km_digitado = input("Distância em km: ")
except:
print("Digite um número válido!")
km_digitado = input("Distância em km: ")
co2 = calcular_co2(km)
# atualiza os dados do usuario
usuario["credito"] = usuario["credito"] - preco
usuario["viagens"] = usuario["viagens"] + 1
usuario["km_total"] = usuario["km_total"] + km
# salva a viagem na lista
viagem = {
"nome": usuario["nome"],
"tipo": tipo_escolhido,
"origem": origem,
"destino": destino,
"km": km,
"preco": preco,
"co2": co2
}
viagens.append(viagem)
print(f"\nViagem registrada!")
print(f"Transporte: {tipo_escolhido}")
print(f"Trajeto: {origem} ate {destino}")
print(f"Valor debitado: R$ {preco:.2f}")
print(f"Crédito restante: R$ {usuario['credito']:.2f}")
print(f"CO2 evitado: {co2:.3f} kg")
def visualizar_viagens():
"""
Exibe todas as viagens registradas no sistema.
Percorre a lista de viagens e apresenta
as informações de cada viagem realizada.
"""
print("\n--- Visualizar Viagens ---")
if len(viagens) == 0:
print("Nenhuma viagem registrada!")
return
for i, v in enumerate(viagens):
print(f"\nViagem {i + 1}")
print(f"Usuário: {v['nome']}")
print(f"Transporte: {v['tipo']}")
print(f"Origem: {v['origem']}")
print(f"Destino: {v['destino']}")
print(f"Distância: {v['km']:.1f} km")
print(f"Valor: R$ {v['preco']:.2f}")
print(f"CO2 evitado: {v['co2']:.3f} kg")
# funcao 4 - ver impacto ambiental
def ver_impacto():
"""
Exibe o impacto ambiental das viagens registradas.
Calcula o total de quilômetros percorridos,
o total de CO2 evitado e uma estimativa da
quantidade de árvores equivalentes ao impacto evitado.
"""
print("\n--- Impacto Ambiental ---")
if len(viagens) == 0:
print("Nenhuma viagem registrada ainda.")
return
total_km = 0.0
total_co2 = 0.0
total_viagens = len(viagens)
# percorre a lista de viagens com for
for v in viagens:
total_km = total_km + v["km"]
total_co2 = total_co2 + v["co2"]
arvores = total_co2 / 21.77
print(f"Total de viagens: {total_viagens}")
print(f"Total de km percorridos: {total_km:.1f} km")
print(f"Total de CO2 evitado: {total_co2:.3f} kg")
print(f"Equivale a {arvores:.2f} árvores plantadas por ano")
# funcao 5 - ver perfil
def ver_perfil():
print("\n--- Meu Perfil ---")
cpf = input("Digite seu CPF: ")
usuario = buscar_usuario(cpf)
if usuario == None:
print("Usuário não encontrado!")
return
# filtra as viagens do usuario usando for
minhas_viagens = []
for v in viagens:
if v["nome"] == usuario["nome"]:
minhas_viagens.append(v)
print(f"\nNome: {usuario['nome']}")
print(f"Pontos: {usuario['pontos']}")
print(f"Crédito: R$ {usuario['credito']:.2f}")
print(f"Viagens feitas: {usuario['viagens']}")
print(f"KM percorridos: {usuario['km_total']:.1f} km")
if len(minhas_viagens) > 0:
print("\nSuas últimas viagens:")
for v in minhas_viagens:
print(f" {v['tipo']} | {v['origem']} ate {v['destino']} | {v['km']:.1f} km")
# programa principal
opcao = ""
while opcao != "0":
mostrar_menu()
opcao = input("Escolha uma opção: ")
match opcao:
case "1":
menu_usuario()
case "2":
menu_viagens()
case "3":
menu_pontos()
case "4":
menu_missao()
case "5":
menu_perfil()
case "6":
menu_voucher()
case "0":
print("\nAté logo!")
case _:
print("Opção inválida! Tente novamente.")