1
resposta

[Projeto] 09 Desafio: hora da prática

Questão 1
inicio = int(input('Insira o primeiro número inteiro: '))
fim = int(input('Insira o segundo número inteiro: '))
if inicio < fim:
for i in range(inicio + 1, fim):
print(i)
elif inicio > fim:
for i in range(fim + 1, inicio):
print(i)
else:
print('Os números são iguais.')
Insira o primeiro número inteiro: 5
Insira o segundo número inteiro: 11
6
7
8
9
10

Questão 2
colonia_a = 4
colonia_b = 10
taxa_a = 0.03
taxa_b = 0.015
dias = 0
while colonia_a <= colonia_b:
colonia_a *= 1 + taxa_a
colonia_b *= 1 + taxa_b
dias += 1
print(f'Irá levar {dias} dias para a colônia A ultrapassar a colônia B.')
**Irá levar 63 dias para a colônia A ultrapassar a colônia B.

Questão 3
for i in range(15):
nota = float(input(f'Insira a nota da pessoa usuária {i}: '))
while (nota < 0) or (nota > 5):
nota = float(input(f'Nota inválida, insira novamente a nota da pessoa usuária {i}: '))
print('Verificação feita. Todas as notas são válidas')
Insira a nota da pessoa usuária 0: 5
Insira a nota da pessoa usuária 1: 6
Nota inválida, insira novamente a nota da pessoa usuária 1: 8
Insira a nota da pessoa usuária 2: 5
Insira a nota da pessoa usuária 3: 2
Insira a nota da pessoa usuária 4: 3
Insira a nota da pessoa usuária 5: 1
Insira a nota da pessoa usuária 6: 2
Verificação feita. Todas as notas são válidas

Questão 4
temperatura = float(input('Insira a temperatura em Celsius: '))
contadora = 0
soma = 0
while temperatura != -273:
soma += temperatura
contadora += 1
temperatura = float(input('Insira a temperatura em Celsius: '))
media = soma / contadora
print(f'A média das temperaturas é: {media}')
Insira a temperatura em Celsius: 25
Insira a temperatura em Celsius: 30
Insira a temperatura em Celsius: -273
A média das temperaturas é: 27.5

Questão 5
num = int(input('Informe um número inteiro: '))
fatorial = 1
i = num
while i > 0:
fatorial = i
i -= 1
print(f'Fatorial de {num} é {fatorial}')
Informe um número inteiro: 5
Fatorial de 5 é 120

Questão 6
num = int(input('Informe um número inteiro de 1 a 10: '))
print(f'Tabuada do {num}:')
for i in range(1, 11):
resultado = num * i
print(f'{num} x {i} = {resultado}')
Informe um número inteiro de 1 a 10: 5
Tabuada do 5:
5 x 1 = 5
5 x 2 = 10
5 x 3 = 15
5 x 4 = 20
5 x 5 = 25
5 x 6 = 30
5 x 7 = 35
5 x 8 = 40
5 x 9 = 45
5 x 10 = 50

Questão 7
num = int(input("Digite o número: "))
eh_primo = True
if num <= 1 :
eh_primo = False
else:
for i in range(2, num):
if num % i == 0:
eh_primo = False
break
if eh_primo:
print(f'O número {num} é primo')
else:
print(f'O número {num} não é primo')
Digite o número: 6
O número 6 não é primo

Questão 8
idade = int(input('Informe a idade (ou um número negativo para encerrar): '))
contador_0_25 = 0
contador_26_50 = 0
contador_51_75 = 0
contador_76_100 = 0
while idade >= 0:
if idade >= 0 and idade <= 25:
contador_0_25 += 1
elif idade >= 26 and idade <= 50:
contador_26_50 += 1
elif idade >= 51 and idade <= 75:
contador_51_75 += 1
elif idade >= 76 and idade <= 100:
contador_76_100 += 1
idade = int(input('Informe a idade (ou um número negativo para encerrar): '))
print('Distribuição de idades:')
print('[0-25]:', contador_0_25)
print('[26-50]:', contador_26_50)
print('[51-75]:', contador_51_75)
print('[76-100]:', contador_76_100)
Informe a idade (ou um número negativo para encerrar): 30
Informe a idade (ou um número negativo para encerrar): 39
Informe a idade (ou um número negativo para encerrar): 2
Distribuição de idades:
[0-25]: 4
[26-50]: 4
[51-75]: 1
[76-100]: 1

Questão 9
votos_candidato1 = 0
votos_candidato2 = 0
votos_candidato3 = 0
votos_candidato4 = 0
votos_nulos = 0
votos_branco = 0
for i in range(0,20):
voto = int(input('Informe seu voto: '))
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_branco += 1
else:
print("Voto inválido.")
print(f'Votos candidato 1: {votos_candidato1}')
print(f'Votos candidato 2: {votos_candidato2}')
print(f'Votos candidato 3: {votos_candidato3}')
print(f'Votos candidato 4: {votos_candidato4}')
print(f'Votos nulos: {votos_nulos}')
print(f'Votos em branco: {votos_branco}')
print(f'Percentual de votos nulos: {(votos_nulos / 20 * 100)}')
print(f'Percentual de votos em branco: {(votos_branco / 20 * 100)}')
Informe seu voto: 4
Informe seu voto: 2
Informe seu voto: 3
Informe seu voto: 1
Informe seu voto: 6
Voto inválido.
Votos nulos: 0
Votos em branco: 1
Percentual de votos nulos: 0.0
Percentual de votos em branco: 5.0

1 resposta

Olá, Silvana. Como vai?

Parabéns pelo excelente desempenho na resolução de toda a lista de exercícios! Você passou por um verdadeiro "maratona" de lógica e estruturas de repetição (for e while), demonstrando um domínio incrível de controle de fluxo e algoritmos clássicos (como cálculo de fatorial, tabuada e verificação de números primos).

A estruturação geral das suas respostas está muito boa. Para agregar ainda mais valor ao seu aprendizado e trazer excelentes práticas de Data Science e desenvolvimento em Python, separei alguns pontos de atenção e duas correções importantes em regras de negócios do seu código:

1. Correção Importante: O Cálculo do Fatorial (Questão 5)

Olhando para o seu código e para a saída gerada na Questão 5, houve um pequeno detalhe na linha do cálculo. Do jeito que foi escrito, a variável fatorial está apenas recebendo o valor atual de i a cada volta, em vez de acumular as multiplicações.

Para calcular o fatorial de forma matemática correta (ex: $5! = 5 \times 4 \times 3 \times 2 \times 1 = 120$), o operador correto de atribuição deve ser o *= (multiplicação acumulada).

Veja a correção desse trecho:

num = int(input('Informe um número inteiro: '))
fatorial = 1
i = num
while i > 0:
    fatorial *= i  # Correção: multiplica e acumula o valor anterior
    i -= 1
print(f'Fatorial de {num} é {fatorial}')

2. Ajuste de Lógica: Entrada Inválida na Eleição (Questão 9)

Na Questão 9, se o usuário digitar um número que não seja de 1 a 6, o programa exibe a mensagem "Voto inválido.". Isso é ótimo!

Porém, repare que o seu laço for i in range(0,20) vai avançar para o próximo participante mesmo assim. Isso significa que aquele voto inválido "queimou" uma das 20 oportunidades de voto, o que reduziria o total de votos válidos e distorceria as contas de percentual no final. Em sistemas de votação reais, se o voto é inválido, o sistema deve pedir para o mesmo eleitor digitar novamente até que entre um valor correto.

Uma excelente prática para resolver isso de forma profissional é usar um while dentro do loop ou controlar os votos computados em uma variável contadora.

3. Dica de Estilo e Legibilidade (PEP 8)

Assim como nas postagens anteriores dos colegas, notei que os blocos internos de repetição e condições (for, while, if, elif) ficaram com as linhas coladas na margem esquerda. No Python, a indentação (o recuo de 4 espaços) é obrigatória para delimitar o escopo dos blocos. Certifique-se de que no seu editor de código (como o VS Code ou o Jupyter Notebook) o recuo esteja correto para evitar o erro de sintaxe.

Você encarou um dos capítulos mais desafiadores da introdução ao Python com muita garra e resolveu problemas complexos muito bem. Continue com essa dedicação fantástica!

Espero que possa ter lhe ajudado!