Olá pessoal, espero que esta mensagem os encontre bem ao tempo de sua leitura!
Estou compartilhando os principais pontos que achei pertinente demonstrar a minha solução para o desafio, as respostas completas pode ser visualizada no projeto: https://github.com/vitorkol/python-for-data disponibilizado no meu github.
Questão 1 uso das funções min() e max() para suporte da função range().
inicio = int(input('Insira o primeiro número: '))
fim = int(input('Insira o segundo número: '))
if inicio == fim:
print('Os números são iguais.')
else:
# Apliquei as funções min() e max() da documentação python que garantem que o range sempre funcione, independente da ordem que o usuário digitou.
menor = min(inicio, fim)
maior = max(inicio, fim)
for i in range(menor + 1, maior):
print(i)
Questão 2
# Coleta de Dados, pensando em um sistema que possa ser reutilizado através de parâmetros.
print("--- Simulador de Crescimento Microbiológico ---")
# Usei nomes de variáveis curtos para as contas, mas mantemos a lógica clara, uma vez que os dados
# serão armazenados em algum banco de dados.
a = float(input("População inicial da Colônia A: "))
b = float(input("População inicial da Colônia B: "))
taxa_a = float(input("Taxa de crescimento da Colônia A (ex: 0.03): "))
taxa_b = float(input("Taxa de crescimento da Colônia B (ex: 0.015): "))
# Contador de dias
dias = 0
while a <= b:
a *= (1 + taxa_a)
b *= (1 + taxa_b)
dias += 1
# Adicionei um condição que é útil para entender o que acontece a cada 10 dias em simulações longas
# Sugestão de melhoria para a RN do desafio.
if dias % 10 == 0:
print(f"Dia {dias}: Colônia A = {a:.2f} | Colônia B = {b:.2f}")
print("\n--- Resultado da Simulação ---")
print(f"Tempo necessário: {dias} dias.")
print(f"População final A: {a:.2f} unidades.")
print(f"População final B: {b:.2f} unidades.")
Questão 8 uso de while continue, true e break ensinados no curso, mas avançando para tratamento de erros não especificados na regra de negócios.
# Declaração dos contadores iniciando com 0
contador_0_25 = 0
contador_26_50 = 0
contador_51_75 = 0
contador_76_100 = 0
while True:
try:
# Coletando as idades dos clientes para análise dentro loop como entrada única até encontrar um break
# Alterei a lógica para aplicar uma RN a fim de evitar o ValueError caso o usuário digitasse: 'vinte' ao inves de 20.
entrada = input('Informe a idade (ou um número negativo para encerrar): ')
idade = int(entrada) # Sem essa tratativa o erro aconteceria aqui se fosse digita idade em texto.
# Condição de saída imediata
if idade < 0:
print("Encerrando programa...")
break # O break "quebra" o loop e pula direto para fora do while
# Processamento dos dados (Regras de Negócio)
if idade <= 25:
contador_0_25 += 1
elif idade <= 50:
contador_26_50 += 1
elif idade <= 75:
contador_51_75 += 1
elif idade <= 100:
contador_76_100 += 1
else:
print("Idade fora da faixa de análise (0-100).")
except ValueError: #Se o usuário digitar texto ao invés de número, o código pula para cá em vez de travar!
print("Erro: Por favor, digite apenas números inteiros (ex: 25).")
print('\nDistribuição final:')
print(f'[0-25]: {contador_0_25}')
print(f'[26-50]: {contador_26_50}')
print(f'[51-75]: {contador_51_75}')
print(f'[76-100]: {contador_76_100}')
A imagem a seguir exemplificando a sugestão da professora:
A imagem a seguir exemplificando a minha solução:
Fico totalmente aberto ao diálogo e à construção conjunta.
Espero ter contribuído um pouco mais para os estudos de nossos colegas do fórum!