Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Estruturas de repetição - Hora da prática

#1

a = int(input("Digite o primeiro número: "))
b = int(input("Digite o segundo número: "))
print(sorted(range(a, b)))

Digite o primeiro número: 7
Digite o segundo número: 25
[7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]

#2

colonia_a = 4
colonia_b = 10
taxa_a = 0.03
taxa_b = 0.015
dias = 0
while colonia_a <= colonia_b:
  colonia_a += colonia_a * taxa_a
  colonia_b += colonia_b * taxa_b
  dias += 1
print(f"Levará {dias} dias para a colônia A ultrapassar ou igualar a colônia B.")

Levará 63 dias para a colônia A ultrapassar ou igualar a colônia B.

#3

for i in range(15):
  nota = float(input("Digite a nota: "))
  #while nota < 0 or nota > 5:
  if nota < 0 or nota > 5:
    print("Nota inválida!")
    nota = float(input("Digite a nota: "))
  else:
    print("Nota válida!")
    print(nota)
    
Digite a nota: 3
Nota válida!
3.0
Digite a nota: 4
Nota válida!
4.0
Digite a nota: 1
Nota válida!
1.0
Digite a nota: 6
Nota inválida!

#4

temperatura = float(input("Digite a temperatura: "))
soma = 0
contador = 0
while temperatura != -273:
  soma += temperatura
  contador += 1
  temperatura = float(input("Digite a temperatura: "))
print(f"A média das temperaturas é: {soma/contador}")

Digite a temperatura: 36
Digite a temperatura: 12
Digite a temperatura: -50
Digite a temperatura: -180
Digite a temperatura: -273
A média das temperaturas é: -45.5

#5

num = int(input("Digite um número: "))
fatorial = 1
for i in range(1, num + 1):
  fatorial *= i
  print(fatorial)
print(f"O fatorial de {num} é: {fatorial}")

Digite um número: 8
1
2
6
24
120
720
5040
40320
O fatorial de 8 é: 40320

Projetos:

#6

num = int(input("Digite um número: "))
print(f"Tabuada do {num}:")
for i in range(1, 11):
  print(f"{num} x {i} = {num * i}")
  print()
  
Digite um número: 4
Tabuada do 4:
4 x 1 = 4

4 x 2 = 8

4 x 3 = 12

4 x 4 = 16

4 x 5 = 20

4 x 6 = 24

4 x 7 = 28

4 x 8 = 32

4 x 9 = 36

4 x 10 = 40

#7

num = int(input("Digite um número: "))
contador = 0
for i in range(1, num + 1):
  if num % i == 0:
    contador += 1
    print(i)
if contador == 2:
  print(f"O número {num} é primo!")
  print(contador)
else:
  print(f"O número {num} não é primo!")
  print(contador)

Digite um número: 17
1
17
O número 17 é primo!
2

#8

idade = int(input("Digite a idade: "))
while idade >= 0:
  if idade >= 0 and idade <= 25:
    print("[0-25]")
  elif idade >= 26 and idade <= 50:
    print("[26-50]")
  elif idade >= 51 and idade <= 75:
    print("[51-75]")
  elif idade >= 76 and idade <= 100:
    print("[76-100]")
  idade = int(input("Digite a idade (ou um número negativo para encerrar): "))
  
Digite a idade: 57
[51-75]
Digite a idade (ou um número negativo para encerrar): 32
[26-50]
Digite a idade (ou um número negativo para encerrar): 76
[76-100]
Digite a idade (ou um número negativo para encerrar): 28
[26-50]
Digite a idade (ou um número negativo para encerrar): -9

#9

candidato_1 = 0
candidato_2 = 0
candidato_3 = 0
candidato_4 = 0
votos_nulos = 0
votos_branco = 0

for i in range(20):
  voto = int(input("Digite o seu voto: "))
  if voto == 1:
    candidato_1 += 1
  elif voto == 2:
    candidato_2 += 1
  elif voto == 3:
    candidato_3 += 1
  elif voto == 4:
    candidato_4 += 1
  elif voto == 5:
    votos_nulos += 1
  elif voto == 6:
    votos_branco += 1
  else:
    print("Voto inválido!")

  print("Votos para o candidato 1: {candidato_1}")
  print("Votos para o candidato 2: {candidato_2}")
  print("Votos para o candidato 3: {candidato_3}")
  print("Votos para o candidato 4: {candidato_4}")
  print("Votos nulos: {votos_nulos}")
  print("Votos em branco: {votos_branco}")
  print("Porcentagem de votos nulos: {votos_nulos *20 / 100}")
  print("Porcentagem de votos em branco: {votos_branco *20 / 100}")
        
Digite o seu voto: 2
Votos para o candidato 1: {candidato_1}
Votos para o candidato 2: {candidato_2}
Votos para o candidato 3: {candidato_3}
Votos para o candidato 4: {candidato_4}
Votos nulos: {votos_nulos}
Votos em branco: {votos_branco}
Porcentagem de votos nulos: {votos_nulos *20 / 100}
Porcentagem de votos em branco: {votos_branco *20 / 100}
Digite o seu voto: 3
Votos para o candidato 1: {candidato_1}
Votos para o candidato 2: {candidato_2}
Votos para o candidato 3: {candidato_3}
Votos para o candidato 4: {candidato_4}
Votos nulos: {votos_nulos}
Votos em branco: {votos_branco}
Porcentagem de votos nulos: {votos_nulos *20 / 100}
Porcentagem de votos em branco: {votos_branco *20 / 100}
1 resposta
solução!

Olá, Aristóteles! Tudo bem?

Parabéns por concluir essa bateria de exercícios! Resolver 9 desafios de uma vez exige bastante dedicação, e os seus códigos mostram que você compreendeu muito bem a lógica das estruturas de repetição (for e while) e das condicionais (if, elif, else).

Analisando as suas resoluções, notei que a lógica principal está excelente. Para te ajudar a refinar ainda mais o seu código Python, trago alguns pontos de atenção e pequenas correções de "bugs silenciosos" que aconteceram nas execuções. Vamos dar uma olhada?


Feedbacks e Pontos de Melhoria

Desafio #1: Otimização de Range
Você utilizou sorted(range(a, b)). Funciona perfeitamente, mas a função range no Python já gera os números em ordem crescente de forma nativa. Para converter um range em uma lista e imprimi-lo, a forma mais idiomática e performática é usar a função list():

print(list(range(a, b)))

Desafio #3: O uso do if vs while na Validação
Você comentou a linha do while e usou um if para validar a nota. O problema do if é que ele verifica apenas uma vez. Se o usuário digitar 6 (inválido) e logo depois digitar 7 (também inválido), o programa vai aceitar o 7.
Para "prender" o usuário até ele digitar algo correto, o while (que você havia começado a fazer) é a estrutura ideal:

while nota < 0 or nota > 5:
    print("Nota inválida!")
    nota = float(input("Digite a nota válida: "))

Desafio #4: Cuidado com a Divisão por Zero
Seu código funciona perfeitamente para o caminho feliz. Porém, se a primeira temperatura digitada pelo usuário for -273, o laço while não executará, e o contador continuará valendo 0. Na hora do print(f"A média... {soma/contador}"), o Python vai gerar um erro chamado ZeroDivisionError.
Para evitar isso, você pode adicionar uma validação simples no final:

if contador > 0:
    print(f"A média das temperaturas é: {soma/contador}")
else:
    print("Nenhuma temperatura foi inserida.")

Desafio #9: F-strings e Lógica de Porcentagem (Atenção aqui!)
Percebeu que na saída do seu terminal ele imprimiu literalmente as chaves, tipo Votos para o candidato 1: {candidato_1}? Isso aconteceu porque você esqueceu a letra f antes das aspas nos prints desse exercício.

Além disso, a sua fórmula de porcentagem está invertida. Você colocou {votos_nulos * 20 / 100}, o que multiplicaria os votos por 0.2. Se o total de eleitores é 20, a fórmula correta da porcentagem é dividir os votos pelo total e multiplicar por 100: (votos_nulos / 20) * 100.
Veja a correção:

# Faltou o "f" no começo de todas as strings!
print(f"Votos para o candidato 1: {candidato_1}")
print(f"Votos nulos: {votos_nulos}")
print(f"Porcentagem de votos nulos: {(votos_nulos / 20) * 100}%")

Seus códigos base (fatorial, tabuada, números primos e colônias de bactérias) estão impecáveis e mostram muito domínio da sintaxe! Continue praticando e documentando seu progresso dessa forma, pois a base em lógica de programação é o pilar mais forte que um cientista de dados precisa ter. Bom estudo!