1
resposta

Desafio: hora da prática - Momentos do projeto

6) Escreva um programa que gere a tabuada de um número inteiro de 1 a 10, de acordo com a escolha da pessoa usuária.

Entrada do número
n = int(input("Digite um número inteiro para ver sua tabuada: "))

print(f"\nTabuada do {n}:")
for i in range(1, 10 + 1):
resultado = n * i
print(f"{n} x {i} = {resultado}")

**7) Os números primos possuem várias aplicações dentro da Ciência de Dados em criptografia e segurança, por exemplo. Um número primo é aquele que é divisível apenas por um e por ele mesmo. Assim, faça um programa que peça um número inteiro e determine se ele é ou não um número primo.
**

Entrada do número
n = int(input("Digite um número inteiro: "))

Verificação
if n <= 1:
print(f"{n} não é um número primo.")
else:
primo = True
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
primo = False
break

if primo:
print(f"{n} é um número primo.")
else:
print(f"{n} não é um número primo.")

8) Escreva um programa que leia as idades de uma quantidade não informada de clientes e mostre a distribuição em intervalos de [0-25], [26-50], [51-75] e [76-100]. Encerre a entrada de dados com um número negativo.

Contadores para cada faixa
faixa1 = faixa2 = faixa3 = faixa4 = 0

while True:
try:
idade = int(input("Digite a idade (ou um número negativo para encerrar): "))
if idade < 0:
break
elif 0 <= idade <= 25:
faixa1 += 1
elif 26 <= idade <= 50:
faixa2 += 1
elif 51 <= idade <= 75:
faixa3 += 1
elif 76 <= idade <= 100:
faixa4 += 1
else:
print("Idade fora do intervalo considerado (0-100).")
except ValueError:
print("Entrada inválida! Digite um número inteiro.")

print("\nDistribuição de idades:")
print(f"[0-25] : {faixa1}")
print(f"[26-50] : {faixa2}")
print(f"[51-75] : {faixa3}")
print(f"[76-100] : {faixa4}")

**9)Escreva um programa que calcule o(a) vencedor(a) da eleição.
**

Inicialização dos contadores
candidato1 = candidato2 = candidato3 = candidato4 = 0
nulos = brancos = 0

total_votos = 20

print("Digite o voto de cada colaborador(a):")
print("1 - Candidato(a) 1")
print("2 - Candidato(a) 2")
print("3 - Candidato(a) 3")
print("4 - Candidato(a) 4")
print("5 - Voto Nulo")
print("6 - Voto em Branco\n")

for i in range(total_votos):
while True:
try:
voto = int(input(f"Voto do colaborador(a) {i+1}: "))
if voto == 1:
candidato1 += 1
break
elif voto == 2:
candidato2 += 1
break
elif voto == 3:
candidato3 += 1
break
elif voto == 4:
candidato4 += 1
break
elif voto == 5:
nulos += 1
break
elif voto == 6:
brancos += 1
break
else:
print("Voto inválido! Digite um número entre 1 e 6.")
except ValueError:
print("Entrada inválida! Digite um número inteiro.")

Exibição dos resultados
print("\nResultado da eleição:")
print(f"Candidato(a) 1: {candidato1} votos")
print(f"Candidato(a) 2: {candidato2} votos")
print(f"Candidato(a) 3: {candidato3} votos")
print(f"Candidato(a) 4: {candidato4} votos")
print(f"Nulos: {nulos} votos")
print(f"Brancos: {brancos} votos")

Cálculo das porcentagens
porc_nulos = (nulos / total_votos) * 100
porc_brancos = (brancos / total_votos) * 100

print(f"\nPorcentagem de votos nulos: {porc_nulos:.2f}%")
print(f"Porcentagem de votos em branco: {porc_brancos:.2f}%")

Determinação do vencedor
votos_candidatos = [candidato1, candidato2, candidato3, candidato4]
vencedor = votos_candidatos.index(max(votos_candidatos)) + 1
print(f"\nO(a) vencedor(a) da eleição é o(a) candidato(a) {vencedor}.")

1 resposta

Olá, Penha. Como vai?

Parabéns pela excelente resolução dos exercícios! Seus códigos demonstram uma maturidade técnica impressionante e foram além do básico sugerido nas atividades.

Gostaria de destacar alguns pontos excepcionais na sua solução e trazer pequenas sugestões que vão agregar ainda mais valor ao seu repertório em Python e Data Science:

1. Otimização matemática impecável nos números primos
No exercício 7, você utilizou a otimização de testar os divisores apenas até a raiz quadrada do número (int(n0.5) + 1). Isso é excelente! Em Ciência de Dados e criptografia, onde trabalhamos com volumes massivos de dados, essa otimização reduz drasticamente o tempo de processamento comparado a testar todos os números até n.

2. Tratamento de exceções (Tratamento de Erros)
Nos exercícios 8 e 9, você utilizou o bloco try-except capturando o ValueError. Isso é uma excelente prática de programação defensiva! Garante que se a pessoa usuária digitar uma letra ou um caractere especial por engano, o programa não vai quebrar (crashar), mas sim exibir uma mensagem amigável e continuar rodando.

3. Validação robusta de votos
No exercício 9, além do try-except, você inteligentemente aninhou um while True dentro do laço for. Isso garante que o programa só avance para o próximo colaborador se o voto digitado for realmente válido (de 1 a 6). Se o voto for inválido, o colaborador atual não perde a vez de votar e o sistema pede a entrada novamente. Ficou excelente!

Uma pequena sugestão para cenários reais: Empates
Apenas como uma melhoria opcional para o seu sistema de eleição, note que na linha onde você determina o vencedor:

vencedor = votos_candidatos.index(max(votos_candidatos)) + 1

O método .index() sempre retorna a primeira ocorrência do maior valor. Caso dois candidatos empatem com a mesma quantidade máxima de votos, o programa declarará o candidato de menor número como vencedor. Para solucionar isso em sistemas reais, você poderia fazer uma checagem de empate usando o método .count() antes de exibir o resultado:

maior_votacao = max(votos_candidatos)
if votos_candidatos.count(maior_votacao) > 1:
    print("\nHouve um empate entre dois ou mais candidatos(as)!")
else:
    vencedor = votos_candidatos.index(maior_votacao) + 1
    print(f"\nO(a) vencedor(a) da eleição é o(a) candidato(a) {vencedor}.")

Contudo, a forma como você estruturou seus códigos está impecável, limpa e com ótima legibilidade. Continue com esse empenho fantástico nos estudos de Python!

Espero que possa ter lhe ajudado!