1
resposta

[Projeto] Momento dos projetos

  1. 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.
numero = int(input("Digite um número inteiro de 1 a 10 para gerar a tabuada: "))

if numero >= 1 and numero <= 10:
    print(f"Tabuada do {numero}:")

    for i in range(1, 11):
        resultado = numero * i
        print(f"{numero} x {i} = {resultado}")
else:
    print("Valor inválido. Digite um número entre 1 e 10.")
  1. Faça um programa que peça um número inteiro e determine se ele é ou não um número primo.
numero = int(input("Digite um número inteiro: "))

if numero <= 1:
    print(f"{numero} não é um número primo.")
else:
    primo = True

    for i in range(2, numero):
        if numero % i == 0:
            primo = False
            break

    if primo:
        print(f"{numero} é um número primo.")
    else:
        print(f"{numero} não é um número primo.")
  1. 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.
faixa_0_25 = 0
faixa_26_50 = 0
faixa_51_75 = 0
faixa_76_100 = 0

while True:
    idade = int(input("Digite a idade do cliente ou um número negativo para encerrar: "))

    if idade < 0:
        break

    if idade <= 25:
        faixa_0_25 += 1
    elif idade <= 50:
        faixa_26_50 += 1
    elif idade <= 75:
        faixa_51_75 += 1
    elif idade <= 100:
        faixa_76_100 += 1
    else:
        print("Idade acima de 100 não será contabilizada nas faixas.")

print("\nDistribuição de idades:")
print(f"[0-25]: {faixa_0_25}")
print(f"[26-50]: {faixa_26_50}")
print(f"[51-75]: {faixa_51_75}")
print(f"[76-100]: {faixa_76_100}")
  1. Em uma eleição para gerência em uma empresa com 20 pessoas colaboradoras, existem quatro candidatos(as). Escreva um programa que calcule o(a) vencedor(a) da eleição. A votação ocorreu da seguinte maneira:

Cada colaborador(a) votou em uma das quatro pessoas candidatas (que representamos pelos números 1, 2, 3 e 4).
Também foram contabilizados os votos nulos (representados pelo número 5) e os votos em branco (representados pelo número 6).
Ao final da votação, o programa deve exibir o número total de votos para cada candidato(a), os nulos e os votos em branco. Além disso, deve calcular e exibir a porcentagem de votos nulos em relação ao total de votos e a porcentagem de votos em branco em relação ao total de votos.

votos_candidato1 = 0
votos_candidato2 = 0
votos_candidato3 = 0
votos_candidato4 = 0
votos_nulos = 0
votos_brancos = 0

total_votos = 20

for i in range(1, total_votos + 1):
    voto = int(input(f"Digite o voto da {i}ª pessoa colaboradora: "))

    if voto == 1:
        votos_candidato1 += 1
    elif voto == 2:
        votos_candidato2 += 1
    elif voto == 3:
        votos_candidato3 += 1
    elif voto == 4:
        votos_candidato4 += 1
    elif voto == 5:
        votos_nulos += 1
    elif voto == 6:
        votos_brancos += 1
    else:
        print("Voto inválido. Será contabilizado como nulo.")
        votos_nulos += 1

percentual_nulos = (votos_nulos / total_votos) * 100
percentual_brancos = (votos_brancos / total_votos) * 100

print("\nResultado da votação:")
print(f"Candidato(a) 1: {votos_candidato1} votos")
print(f"Candidato(a) 2: {votos_candidato2} votos")
print(f"Candidato(a) 3: {votos_candidato3} votos")
print(f"Candidato(a) 4: {votos_candidato4} votos")
print(f"Votos nulos: {votos_nulos}")
print(f"Votos em branco: {votos_brancos}")

print(f"\nPercentual de votos nulos: {percentual_nulos:.2f}%")
print(f"Percentual de votos em branco: {percentual_brancos:.2f}%")

votos_candidatos = [
    votos_candidato1,
    votos_candidato2,
    votos_candidato3,
    votos_candidato4
]

maior_votacao = max(votos_candidatos)

if votos_candidatos.count(maior_votacao) > 1:
    print("\nHouve empate entre candidatos(as).")
else:
    vencedor = votos_candidatos.index(maior_votacao) + 1
    print(f"\nO(a) vencedor(a) foi o(a) candidato(a) {vencedor}, com {maior_votacao} votos.")
1 resposta

Olá, Cássio. Como vai?

Parabéns pela resolução dos desafios! Seus códigos estão muito bem estruturados, limpos e resolvem os problemas de forma excelente. Você aplicou muito bem os conceitos de estruturas de repetição (for e while), condicionais e manipulação de listas.

Gostaria de destacar alguns pontos muito positivos e deixar pequenas sugestões de boas práticas que podem deixar seus códigos ainda mais robustos para o dia a dia de Data Science:

1. Tabuada com validação
Sua validação com if numero >= 1 and numero <= 10: ficou ótima. Uma alternativa comum quando trabalhamos com Python é encadear essa comparação de forma mais matemática, assim:

if 1 <= numero <= 10:

Funciona exatamente igual e deixa o código bem legível.

2. Verificação de número primo
Seu algoritmo com a flag primo = True e a interrupção usando break está perfeito e economiza processamento. Pensando em otimização matemática para números muito grandes, nós não precisamos testar todos os números até o próprio numero. Basta testar até a raiz quadrada dele, pois nenhum fator maior que a raiz terá um par correspondente menor que ela. Em texto plano, a lógica seria testar até (raiz de numero) ou numero 0.5. Mas para o escopo do desafio, sua lógica está impecável!

3. Distribuição de idades
O uso do while True com a condição de parada if idade < 0: break foi a escolha perfeita para quando não sabemos a quantidade exata de entradas. Você também tratou muito bem o caso de idades acima de 100 anos.

4. Sistema de votação e desempate
A lógica que você usou no final para descobrir o vencedor foi excelente. Usar a função max() combinada com o método .count() para verificar se houve empate foi uma sacada muito inteligente e elegante.

Uma sugestão de melhoria para o futuro, visando o ganho de escala, seria substituir as diversas variáveis individuais de votos por um dicionário ou uma lista desde o início do programa. Veja como o trecho da contagem poderia ser simplificado:

votos = [0, 0, 0, 0, 0, 0] # Índices de 0 a 3 para candidatos, 4 para nulo, 5 para branco

# Dentro do laço, dar o input e ajustar o índice (voto - 1)
# Exemplo simplificado de incremento:
# votos[voto - 1] += 1

Isso reduziria bastante os blocos de elif. Contudo, a forma como você construiu atende perfeitamente o que foi proposto na atividade e demonstra que você assimilou muito bem o conteúdo das aulas.

Continue com esse excelente empenho nos estudos!

Espero que possa ter lhe ajudado!