import os
import platform
# --- Classe para cores no terminal (usando __slots__ para economizar memória) ---
class Cores:
__slots__ = ()
VERDE = "\033[92m"
VERMELHO = "\033[91m"
AMARELO = "\033[93m"
AZUL = "\033[94m"
CIANO = "\033[96m"
RESET = "\033[0m"
NEGRITO = "\033[1m"
# --- Função para limpar a tela ---
def limpar_tela():
os.system("cls" if platform.system() == "Windows" else "clear")
# --- Cabeçalho estilizado ---
def cabecalho(titulo):
print(f"{Cores.CIANO}{Cores.NEGRITO}=== {titulo.upper()} ==={Cores.RESET}")
# --- Função auxiliar para ler números inteiros com validação ---
def ler_inteiro(msg, minimo=None, maximo=None):
while True:
try:
valor = int(input(msg))
if minimo is not None and valor < minimo:
print(f"{Cores.VERMELHO}Valor mínimo é {minimo}!{Cores.RESET}")
continue
if maximo is not None and valor > maximo:
print(f"{Cores.VERMELHO}Valor máximo é {maximo}!{Cores.RESET}")
continue
return valor
except ValueError:
print(f"{Cores.VERMELHO}Por favor, digite um número válido!{Cores.RESET}")
# --- Função auxiliar para ler números reais (float) ---
def ler_float(msg):
while True:
try:
return float(input(msg))
except ValueError:
print(f"{Cores.VERMELHO}Por favor, digite um número válido!{Cores.RESET}")
# --- 1. Verificar par ou ímpar ---
def verificar_par_ou_impar():
limpar_tela()
cabecalho("Verificar Par ou Ímpar")
num = ler_inteiro("Digite um número: ")
print(f"{Cores.VERDE}{num} é {'par' if num % 2 == 0 else 'ímpar'}.{Cores.RESET}")
num = None # libera referência
# --- 2. Classificar idade ---
def classificar_idade():
limpar_tela()
cabecalho("Classificar Idade")
idade = ler_inteiro("Digite sua idade: ", minimo=0)
if idade <= 12:
categoria = "Criança"
elif idade <= 18:
categoria = "Adolescente"
else:
categoria = "Adulto"
print(f"{Cores.AZUL}Você é {categoria}.{Cores.RESET}")
idade = categoria = None # libera referências
# --- 3. Verificar login ---
def verificar_login():
limpar_tela()
cabecalho("Verificar Login")
usuario_correto, senha_correta = "admin", "1234"
usuario = input("Digite o nome de usuário: ")
senha = input("Digite a senha: ")
if usuario == usuario_correto and senha == senha_correta:
print(f"{Cores.VERDE}Login bem-sucedido!{Cores.RESET}")
else:
print(f"{Cores.VERMELHO}Usuário ou senha incorretos.{Cores.RESET}")
usuario = senha = None # libera referências
# --- 4. Determinar quadrante ---
def determinar_quadrante():
limpar_tela()
cabecalho("Determinar Quadrante")
x = ler_float("Digite a coordenada X: ")
y = ler_float("Digite a coordenada Y: ")
if x > 0 and y > 0:
quadrante = "Primeiro Quadrante"
elif x < 0 and y > 0:
quadrante = "Segundo Quadrante"
elif x < 0 and y < 0:
quadrante = "Terceiro Quadrante"
elif x > 0 and y < 0:
quadrante = "Quarto Quadrante"
else:
quadrante = "Eixo ou Origem"
print(f"{Cores.AMARELO}O ponto está no {quadrante}.{Cores.RESET}")
x = y = quadrante = None # libera referências
# --- Menu principal ---
def menu():
opcoes = {
"1": ("Verificar se é par ou ímpar", verificar_par_ou_impar),
"2": ("Classificar idade", classificar_idade),
"3": ("Verificar login", verificar_login),
"4": ("Determinar quadrante", determinar_quadrante),
"0": ("Sair", None)
}
while True:
limpar_tela()
cabecalho("Menu Principal")
for k, (desc, _) in opcoes.items():
print(f"{Cores.AMARELO}{k}{Cores.RESET} - {desc}")
escolha = input("\nEscolha uma opção: ").strip()
if escolha == "0":
print(f"{Cores.VERMELHO}Saindo...{Cores.RESET}")
break
elif escolha in opcoes:
opcoes[escolha][1]()
input(f"\n{Cores.AZUL}Pressione Enter para voltar ao menu...{Cores.RESET}")
else:
print(f"{Cores.VERMELHO}Opção inválida!{Cores.RESET}")
input("Pressione Enter para tentar novamente...")
escolha = None # libera referência
# --- Execução ---
if __name__ == "__main__":
menu()