Olá, Rafael. Como vai?
Excelente exercício de lógica! Você conseguiu identificar bem as variáveis necessárias e o comportamento esperado do algoritmo para cada condição isolada.
Para agregar valor ao seu aprendizado, é interessante observar que, no mundo da programação, quando temos duas condições que levam ao mesmo benefício (a meia-entrada), podemos otimizar o código utilizando Operadores Lógicos.
Otimizando com o Operador OR (OU)
Você mencionou que uma lógica não depende da outra. No entanto, para o sistema do cinema, se a pessoa atender a pelo menos uma das condições, ela já garante o desconto. Em vez de fazer duas verificações separadas, podemos unir tudo em uma única instrução lógica usando o or:
if idade < 18 or estudante == True:
print("Tem direito a meia-entrada")
else:
print("Não tem direito a meia-entrada")
Por que unir as condições?
- Evita redundância: Se você tratar as lógicas de forma totalmente independente (como dois blocos separados), um estudante de 15 anos receberia a mensagem "Tem direito a meia-entrada" duas vezes seguidas no console.
- Clareza: O uso do
else (Senão) garante que a mensagem de "Não tem direito" só apareça se a pessoa falhar em todas as regras de desconto simultaneamente.
Observação sobre a Sintaxe
Notei que você usou >= 18 para o caso negativo. Isso está perfeito! Na lógica de programação, o contrário de "menor que" (<) é sempre "maior ou igual a" (>=).
Outro detalhe importante: em linguagens como Python ou C#, o símbolo = é usado para atribuição (dar um valor a uma variável), enquanto o símbolo == ou o próprio nome da variável é usado para comparação.
- Atribuição:
estudante = True (está afirmando que ele é estudante). - Comparação:
if estudante == True: (está perguntando se ele é estudante).
Seu raciocínio está muito bem encaminhado para a construção de algoritmos mais complexos!
Espero que possa ter lhe ajudado!