Match ou If-else

Match ou If-else

O que é o "Match" ? 🤔

É uma maneira elegante e eficaz de simplificar suas expressões condicionais, ler manual 8.6📝match. Essa funcionalidade proporciona clareza ao código, tornando-o mais fácil de entender e manter. Imagine que queremos verificar sobre os personagens de "🧙‍♂️✨Harry Potter", a 🏰 casa a qual pertencem alguns personagens (Grifinória ou Sonserina). Poderia usar um if, elif e else da seguinte forma.

# bora testar com harry, hermione, ron, albus , severus e draco
nome = input("Nome do personagem: ").strip().title()

if nome == "Harry":
    print("Grifinória")
elif nome == "Hermione":
    print("Grifinória")
elif nome == "Ron":
    print("Grifinória")
elif nome == "Albus":
    print("Grifinória")
elif nome == "Severus":
    print("Sonserina")
elif nome == "Draco":
    print("Sonserina")
else:
    print("Quem?")

Agora um exemplo usando "match", este vai fazer o mesmo efeito.

nome = input("Nome do personagem: ").strip().title()

match nome:
    case "Harry":
        print("Grifinória")
    case "Hermione":
        print("Grifinória")
    case "Ron":
        print("Grifinória")
    case "Albus":
        print("Grifinória")
    case "Severus":
        print("Sonserina")
    case "Draco":
        print("Sonserina")
    case _:
        # _ isso significa qualquer outra palavra ou valor
        print("Quem?")

Repare que o código ficou mais fácil de entender, o match basicamente vai pegar o nome e vai testar em cada case e se for o correto, ele executa o código dentro do "case" e termina o programa. Nesse caso, temos duas casas só: Grifinória e Sonserina, então podemos melhorar o código mais ainda.

nome = input("Nome do personagem: ").strip().title()

match nome:
    case "Harry" | "Hermione" | "Ron" | "Albus":
        print("Grifinória")
    case "Severus" | "Draco":
        print("Sonserina")
    case _:
        print("Quem?")

Fomos de 15-14 linhas de código para 🚀 7 linhas de código.

💡Lembre que enquanto maior o código e mais complexo ele for, mais chances há de errar , seja na sintaxe, lógica ,etc.