1
resposta

Praticando - Parte 1

Questão 1: Verificador de Maioridade
Código
Python

1) Escreva um programa que peça a idade de uma pessoa e imprima "Maior de idade" se ela tiver 18 anos ou mais, e "Menor de idade" caso contrário.

idade = int(input("Digite sua idade: "))

if idade >= 18:
print("Maior de idade")
else:
print("Menor de idade")
Execução / Resultado
Plaintext
Digite sua idade: 20
Maior de idade
Questão 2: Verificador de Número Positivo, Negativo ou Zero
Código
Python

2) Escreva um programa que peça um número e mostre se ele é positivo, negativo ou zero.

numero = float(input("Digite um número: "))

if numero > 0:
print("O número é positivo")
elif numero < 0:
print("O número é negativo")
else:
print("O número é zero")
Execução / Resultado
Plaintext
Digite um número: -5
O número é negativo
Questão 3: Verificador de Ano Bissexto
Código
Python

3) Escreva um programa que peça um ano e determine se ele é bissexto.

ano = int(input("Digite um ano: "))

if (ano % 4 == 0 and ano % 100 != 0) or (ano % 400 == 0):
print(f"O ano {ano} é bissexto.")
else:
print(f"O ano {ano} não é bissexto.")
Execução / Resultado
Plaintext
Digite um ano: 2024
O ano 2024 é bissexto.
Questão 4: Calculadora de Desconto de Evento
Código
Python

4) Escreva um programa que peça a idade de uma pessoa e a categoria dela (estudante, aposentado, etc.) e determine o preço do ingresso para um evento.

O preço base é R$ 50,00. Estudantes ganham 50% de desconto e aposentados ganham 30%. Menores de 5 anos não pagam.

idade = int(input("Digite sua idade: "))
categoria = input("Digite sua categoria (estudante/aposentado/outro): ").lower()

preco_base = 50.0

if idade < 5:
preco_final = 0.0
elif categoria == "estudante":
preco_final = preco_base * 0.5
elif categoria == "aposentado":
preco_final = preco_base * 0.7
else:
preco_final = preco_base

print(f"O preço do ingresso é: R$ {preco_final:.2f}")
Execução / Resultado
Plaintext
Digite sua idade: 21
Digite sua categoria (estudante/aposentado/outro): estudante
O preço do ingresso é: R$ 25.00
Questão 5: Gerador de Lista de Números Primos
Código
Python

5) Escreva um programa que peça um número inteiro positivo e gere uma lista com todos os números primos menores ou iguais a ele.

limite = int(input("Digite um número inteiro: "))
lista_primos = []

for num in range(2, limite + 1):
primo = True
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
primo = False
break
if primo:
lista_primos.append(num)

Resultado

print(f'Lista de números primos: {lista_primos}')
Execução / Resultado
Plaintext
Digite um número inteiro: 4
Lista de números primos: [2, 3]

Questão 6: Validador de Data
Código
Python

6) Escreva um programa que peça uma data informando o dia, mês e ano e determine se ela é válida para uma análise

Coletamos a data

dia = int(input('Digite o dia: '))
mes = int(input('Digite o mês: '))
ano = int(input('Digite o ano: '))

Análise de fevereiro

if mes == 2:
# Verificamos se é ou não um ano bissexto
if ano % 4 == 0 and (ano % 400 == 0 or ano % 100 != 0):
dias_fevereiro = 29
else:
dias_fevereiro = 28
# Verificamos se o dia colocado corresponde ao máximo de dias de fevereiro
if dia >= 1 and dia <= dias_fevereiro:
print('Data válida')
else:
print('Data inválida')

Verificamos meses terminados em 31 dias

elif mes in [1, 3, 5, 7, 8, 10, 12]:
if dia >= 1 and dia <= 31:
print('Data válida')
else:
print('Data inválida')

Verificamos meses terminados em 30 dias

elif mes in [4, 6, 9, 11]:
if dia >= 1 and dia <= 30:
print('Data válida')
else:
print('Data inválida')

Caso o mês não esteja entre 1 e 12

else:
print('Data inválida')
Execução / Resultado
Plaintext
Digite o dia: 28
Digite o mês: 2
Digite o ano: 2024
Data válida
Questão 7: Crescimento de Bactérias
Código
Python

1 resposta

Olá, Nicole. Como vai?

Parabéns por concluir a primeira parte desta lista de exercícios! Você estruturou muito bem a lógica condicional (if, elif, else) e soube aplicar operadores lógicos complexos de forma perfeita, como no caso do cálculo de ano bissexto. Seus códigos rodam sem erros e tratam muito bem os tipos de dados informados.

Analisei suas soluções e separei alguns destaques técnicos e boas práticas que vão enriquecer ainda mais o seu repertório em Python:

1. Excelente Otimização Matemática (Questão 5)

Na questão dos números primos, você usou uma estratégia matemática brilhante: limitar o laço de checagem até a raiz quadrada do número (num 0.5).

Fazer a checagem até a raiz quadrada poupa o computador de realizar divisões desnecessárias. Para números grandes, essa abordagem reduz drasticamente o tempo de processamento, o que é uma preocupação fundamental no dia a dia de uma cientista de dados trabalhando com grandes volumes de informações. Parabéns!

2. Tratamento de Múltiplas Categorias (Questão 4)

No código da calculadora de ingressos, a lógica de checar a idade menor que 5 anos antes de verificar a categoria de estudante ou aposentado foi uma excelente escolha de arquitetura. Desse modo, se uma criança for menor de 5 anos e alguém digitar por engano que ela é estudante, o programa dará a gratuidade corretamente, priorizando a regra de negócio mais importante.

3. Reduzindo a Repetição de Código (Questão 6)

Na sua validação de datas, o funcionamento lógico está 100% correto. Pensando em legibilidade e manutenção de código, podemos evitar repetir a estrutura print('Data válida') e print('Data inválida') tantas vezes.

Uma boa prática em Python é criar uma variável de controle chamada valida (do tipo booleano: True ou False) ou guardar o número máximo de dias do mês escolhido para fazer uma única validação no final do arquivo. Veja como o código fica mais enxuto:

dia = int(input('Digite o dia: '))
mes = int(input('Digite o mês: '))
ano = int(input('Digite o ano: '))

# Definimos uma variável para guardar o limite de dias daquele mês
dias_no_mes = 0

if mes == 2:
    if (ano % 4 == 0 and ano % 100 != 0) or (ano % 400 == 0):
        dias_no_mes = 29
    else:
        dias_no_mes = 28
elif mes in [1, 3, 5, 7, 8, 10, 12]:
    dias_no_mes = 31
elif mes in [4, 6, 9, 11]:
    dias_no_mes = 30

# Fazemos uma única checagem clara no final do script
if 1 <= mes <= 12 and 1 <= dia <= dias_no_mes:
    print('Data válida')
else:
    print('Data inválida')

O que melhorou aqui?

  • Usamos a validação encadeada clássica do Python: 1 <= dia <= dias_no_mes em vez de usar operadores and, o que torna o código muito mais legível.
  • Se futuramente você precisar alterar a mensagem de erro para português ou inglês, precisará mudar em apenas um lugar do código e não em quatro.

A sua base de lógica condicional e loops está fortíssima, Nicole. Continue mantendo essa excelente consistência em todas as partes dos seus desafios!

Espero que possa ter lhe ajudado!