1
resposta

Desafio: hora da prática - Aquecendo na programação

1) Escreva um programa que peça dois números inteiros e imprima todos os números inteiros entre eles.

Entrada dos números
num1 = int(input("Digite o primeiro número inteiro: "))
num2 = int(input("Digite o segundo número inteiro: "))

Verifica qual é o menor e o maior
menor = min(num1, num2)
maior = max(num1, num2)

Imprime todos os números inteiros entre eles
print(f"Números inteiros entre {menor} e {maior}:")
for i in range(menor + 1, maior):
print(i)

2) Escreva um programa para calcular quantos dias levará para a colônia de uma bactéria A ultrapassar ou igualar a colônia de uma bactéria B, com base nas taxas de crescimento de 3% e 1,5% respectivamente. Considere que a colônia A inicia com 4 elementos e a B com 10.

Valores iniciais
bacteria_A = 4
bacteria_B = 10

Taxas de crescimento
taxa_A = 0.03 # 3%
taxa_B = 0.015 # 1,5%

dias = 0

Loop até A >= B
while bacteria_A < bacteria_B:
bacteria_A *= (1 + taxa_A)
bacteria_B *= (1 + taxa_B)
dias += 1

print(f"A colônia A ultrapassa ou iguala a colônia B em {dias} dias.")

3) Para tratar uma quantidade de 15 dados de avaliações de pessoas usuárias de um serviço da empresa, precisamos verificar se as notas são válidas. Então, escreva um programa que vai receber a nota de 0 a 5 de todos os dados e verificar se é um valor válido. Caso seja inserido uma nota acima de 5 ou abaixo de 0, repita até que a pessoa usuária insira um valor válido.

notas = []

for i in range(15):
while True:
try:
nota = float(input(f"Digite a nota {i+1} (0 a 5): "))
if 0 <= nota <= 5:
notas.append(nota)
break
else:
print("Valor inválido! A nota deve estar entre 0 e 5.")
except ValueError:
print("Entrada inválida! Digite um número.")

print("\nTodas as notas válidas foram registradas:")
print(notas)

4) Desenvolva um programa que leia um conjunto indeterminado de temperaturas em Celsius e informe a média delas. A leitura deve ser encerrada ao ser enviado o valor -273°C.

soma = 0
contador = 0

while True:
try:
temp = float(input("Digite uma temperatura em °C (ou -273 para encerrar): "))
if temp == -273:
break
soma += temp
contador += 1
except ValueError:
print("Entrada inválida! Digite um número.")

if contador > 0:
media = soma / contador
print(f"\nA média das {contador} temperaturas é: {media:.2f} °C")
else:
print("\nNenhuma temperatura válida foi informada.")

**5) Escreva um programa que calcule o fatorial de um número inteiro fornecido pela pessoa usuária. Lembrando que o fatorial de um número inteiro é a multiplicação desse número por todos os seus antecessores até o número 1. **

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

Verificação de número negativo
if n < 0:
print("Não existe fatorial de número negativo.")
else:
fatorial = 1
for i in range(1, n + 1):
fatorial *= i
print(f"O fatorial de {n} é {fatorial}.")

1 resposta

Olá, Penha. Como vai?

Excelente resolução para os dois desafios propostos! A sua abordagem lógica demonstra uma ótima compreensão de como aplicar as estruturas de repetição for (quando sabemos o intervalo exato) e while (quando dependemos de uma condição de parada que muda dinamicamente).

No Desafio 1, a sua estratégia de identificar o menor e o maior número usando as funções min() e max() foi fantástica. Isso impede que o código falhe caso o usuário digite o número maior primeiro, tornando o programa muito mais robusto. E o ajuste no range(menor + 1, maior) garantiu perfeitamente que fossem exibidos apenas os números entre eles, excluindo as pontas.

No Desafio 2, a lógica do crescimento populacional com o laço while ficou impecável. A acumulação dos dias e a multiplicação correta pelas taxas de juros compostos simulam de forma exata o crescimento biológico.

Gostaria de sugerir apenas dois pontos de atenção voltados a boas práticas e legibilidade do código em Python:

1. Ajuste de Indentação
Assim como no exercício anterior, lembre-se de que no Python o recuo (indentação) é o que define o que está dentro do laço. Os comandos print(i) no primeiro exercício, e as linhas que atualizam as bactérias e os dias no segundo, precisam estar avançados (com 4 espaços ou um Tab) para que o interpretador Python execute o código sem erros de sintaxe (IndentationError).

2. Otimização de Atribuição no Desafio 2
Uma convenção muito elegante e comum no Python é utilizar operadores de atribuição compacta. No cálculo do crescimento, em vez de repetir a variável, você pode fazer uma pequena otimização visual:

# Em vez de: bacteria_A = bacteria_A * (1 + taxa_A)
# Você pode escrever diretamente:
bacteria_A *= (1 + taxa_A)

Nota: Notei que você já aplicou exatamente essa estrutura compacta *= e += no seu código do while. Isso é excelente e mostra que você já está assimilando as melhores práticas da linguagem!

Parabéns pela dedicação contínua e pela qualidade das suas postagens no fórum.

Espero que possa ter lhe ajudado!