Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

[Dúvida] Match com comparador

No exercício 2, conseguir a resolução utilizando if elif else mas quando tentei resolver com match apareceu um erro

idade = input('Informe sua idade\n')
idade = int(idade)

match idade:

    case idade < 0 :
        os.system('cls')
        print('Informe uma idade válida')

Por exemplo, ao tentar rodar este trecho de código de teste, aparece a mensagem no terminal de "invalid syntax" apontando para o comparador <. Por favor, gostaria de saber o porque disto.

4 respostas

Opa, Boa tarde!

O erro de "invalid syntax" acontece porque o "case idade < 0" não é um padrão válido.

Para um match statement, cada case deve ser seguido por um padrão, não uma expressão booleana.

Pode utilizar assim:

match idade:
    case _ if idade < 0:
        os.system('cls')
        print('Informe uma idade válida')

Olá!

A sua sugestão deu certo, rodou certinho o código porém, quando tento incrementar com outras opções, código para.

def categoria_idade_match():
    idade = input('Informe sua idade\n')
    idade = int(idade)

    match idade:
        case 1:
            if idade < 13:
                os.system('cls')
                print('Você é considerado uma criança')
        case _ if idade < 0:
            os.system('cls')
            print('Informe uma idade válida')

categoria_idade_match()

Por exemplo, ao tentar utiilzar uma verificação para outro grupo de idade, a mensagem do print não aparece

solução!

Opa, Bom dia!

O problema no seu código está na forma como vc está utilizando o match. Cada case é uma possibilidade de correspondência com o valor da variável. Case 1 só pode ser verdadeiro se idade for exatamente igual a 1. Para verificar faixas de idade, vc precisa usar a estrutura case _ if para cada faixa de idade, assim como você fez para verificar idades negativas.

Tenta assim:

import os

def categoria_idade_match():
    idade = input('Informe sua idade\n')
    idade = int(idade)

    match idade:
        case _ if idade < 0: # case _ if ✅
            os.system('cls')
            print('Informe uma idade válida')
        case _ if idade < 13:
            os.system('cls')
            print('Você é considerado uma criança')

categoria_idade_match()

Cada case _ if verifica uma condição específica.

MUITO OBRIGADA, TU ME SALVOU!!!

Agora deu certo o código e aprendi a usar o match em outros contextos, muito obrigada mais uma vez!