Menu de Opções em Python

Olá pessoal, estou a tentar criar um menu de opções em Python, mas não estou a conseguir obter os resultados desejados visto que a linguagem não possui o Switch-Case.
Fiz com if-elif mas ainda tem alguns erros, preciso de ajuda na implementação de mensagens de erro caso o utilizador não seguir as informações do Menu
O código está assim:

print("Nº de Passageiros || Ligeiros || Pesados || Motociclos ||")
print("--------------------------------------------------------|")
print("      1           |   3.25€    |          |             |")
print("-------------------------------                         |")
print("                  |            |   5.65€  |             |")
print("      2           |   1.50€    |          |   0.75      |")
print("-------------------------------------------             |")
print("   >= 3           |   0.75€    |   4.00€  |             |")
print("--------------------------------------------------------|")
print("Ligeiros [L] / Pesados [P] / Motociclos [M]")
veiculo = input("Insira o tipo de veículo => ")
numpass = float(input("Insira o nº de passageiros =>  "))


if veiculo == 'M' and numpass == 1:
   preco = '0.75€'
   print (preco)
if veiculo == 'L' and numpass == 1:
    preco = '3.25€'
    print(preco)
elif numpass == 2:
    preco = '1.50€'
    print(preco)
elif numpass >= 3:
    preco = '0.75€'
    print(preco)
if veiculo == 'P' and numpass >= 1 and numpass <= 2:
    preco = '5.65€'
    print(preco)
elif numpass > 3:
    preco = '4.00€'
    print(preco)

Quando for inserido um nº de passageiros superior a 3 se o veículo for “Ligeiros”, faz o print de todos os preços que foram definidos para esse caso incluindo os outros tipos de veiculos
Ajuda pfvr :slight_smile:

Acho que você tá fazendo confusao nesse trecho aqui (e no similar abaixo):

if veiculo == 'L' and numpass == 1:
    preco = '3.25€'
    print(preco)
elif numpass == 2:

Se você acha que a parte veiculo=='L'ainda está sendo testada, se enganou.

Você teria que repetir no elifa condiçao novamente:

if veiculo == 'L' and numpass == 1:
    preco = '3.25€'
    print(preco)
elif veiculo == 'L' and numpass == 2:

No seu caso acho que os ifs ficariam:

if veiculo == 'M':
elif veiculo == 'P' and numpass in [1,2]:
elif veiculo == 'P' and numpass >= 3:
elif veiculo == 'L' and numpass == 1:
elif veiculo == 'L' and numpass == 2:
else: # veiculo == 'L' and numpass >= 3:

Ou use um dictionary, onde fica muito mais claro entender o que se passa.

1 curtida

Obrigado :grinning:

Quando for inserido um nº de passageiros superior a 3 se o veículo for “Ligeiros”, faz o print de todos os preços que foram definidos para esse caso incluindo os outros tipos de veiculos
Ajuda pfvr

n entendi essa parte, ele ta mostrando todos os preços ou é pra mostrar todos os preços??