2
respostas

09 Desafio: hora da prática

Minhas Soluções! 1

a=int(input('Digite o primeiro numero: '))
b=int(input('Digite o segundo numero: '))
for i in range(a,b):
  print(i)

2

dias = 0
pop_a = 4
r_a=0.03
pop_b = 10
r_b=0.015

while pop_a < pop_b:

  pop_a=pop_a*(1+r_a)
  pop_b=pop_b*(1+r_b)
  dias+=1

print(f'A quantidade de dias é :{dias}')

3

dados=0 #contador
for _ in range(15): # Loop principal para 15 notas
  nota = -1 # Inicializa como inválida no início de cada iteração
  while nota < 0 or nota >5: # Verifica se a nota está fora do intervalo, ou seja, nesse caso usa-se um processo inverso para rodar o while
    nota=(int(input("digite uma nota: ")))
    if 0 <= nota <=5: #aceitar e contar as notas ou se for o caso futuro criar uma soma
      dados += 1
    else:
      print("digite novamente!")
print(f'Notas validas: {dados}')

4

# criando os contadores
temperatura = 0
contador = 0
soma= 0

while temperatura != -273: #criando a restrição para o numero de parada

  temperatura= float(input(" Digite um valor em celcius: ")) #solicitando ao usuario a entrada do valor

  soma += temperatura # vetor de soma das temperaturas digitadas

  contador +=1 #contador do numero de valores digitados

  media=soma/contador #calculo
print(f'A média em Celcius é: {media}') #impressão do resultado

5

resultado = 1 # acumulador de resultado
# Solicitar valor até que o usuário forneça um valor válido

while True:
  n = int(input("DIgite um valor inteiro positivo: "))
  if n < 0:
    print("Valor inválido! Apenas números inteiros não negativos são permitidos.")
    continue # Volta para pedir a entrada
  else:
    valor_incial=n # armazena o valor original de n
    break
if n > 0: # calculo do fatoria
  while n > 0:
    resultado= resultado*n # acumulador do loop onde ele multiplica o valor descrecendo o n e armazena o calculo
    n-=1 # redutor do n até ele zerar e sair do loop
  print(f"O fatorial de {valor_incial} é {resultado}")
else:
  print(f"o fatorial de 0 é 1 ")

6

num = int(input("Digite um valor inteiro de 1 a 10: "))

#Exibe uma mensagem indicando que o programa irá gerar a tabuada do número fornecido.
print(f"A tabuada {num} é:")
#O loop for itera sobre uma sequência de números gerada pela função range(0, 11).
#O intervalo gerado por range(0, 11) vai de 0 até 10 (inclusive).Em cada iteração, a variável i assume o próximo valor da sequência.
for i in range(0,11):
#A cada iteração, o programa calcula o produto de i (número atual da sequência) e num (número fornecido pelo usuário). O resultado do cálculo é armazenado na variável m.
  m= i*num #
  print(f"{num} x {i} = {m}")
2 respostas

7

print("Este programa verifica se um número inteiro é primo.")
while True:
  num = int(input("Digite um valor inteiro de maior que 0: "))
  if num <= 0:
    print("Valor inválido! Apenas números inteiros não negativos são permitidos.")
    continue # Volta para pedir a entrada
  else:
    break

contador=0
for i in range(1, num+1):
  resultado= num%i
  if resultado ==0:
    contador+=1
    #print(contador)

if contador==2:
  print(f"O numero {num} é primo")
else:
  print(f"O número {num} não é primo e possui {contador} divisores.")
print("Obrigado por usar o programa!")

8

#inicialização das variaveis
idade = 1
contador=[0]*4
contador1,contador2,contador3,contador4=contador
print("Programa para armazenar a idade dos pessionistas") #titulo e entrada amigavel

while idade >= 0: #criando a restrição para o numero de parada em caso de valor negativo

  idade=int(input("Entre com a idade do pensionista: ")) #entrada da idade

#classes dos intervalos das idades digitadas
  if idade >= 0 and idade <=25:
    contador1+=1 #contador de idades dentro da faixa
  elif idade >= 26 and idade <=50:
    contador2+=1
  elif idade >= 51 and idade <=75:
    contador3+=1
  elif idade >= 76 and idade <=100:
    contador4+=1
  else:
    #print("A idade digitada não é válida!")
    break # criterio de parada caso seja digitado uma idade acima de 100 anos

print('A faixa de idade dos clientes estão nos seguintes intervalos')
#print(f"[0-25] = {contador1}\n [26-50] = {contador2}\n [51-75] = {contador3}\n [76-100] = {contador4}")

import pandas as pd

# Criando um DataFrame
data = {'Faixa': ['[0-25]', '[26-50]', '[51-75]', '[76-100]'],
        'Contagem': [contador1, contador2, contador3, contador4]}
df = pd.DataFrame(data)

# Imprimindo o DataFrame
print(df)

9

import pandas as pd
#inicialização das váriaveis
voto = 0
candidato= [0]*4 #[0, 0, 0, 0] lista com a posição de cada candidato
branco = 0
nulo = 0
n=20

# Criando um DataFrame para o numero dos candidatos
cand = {'Nome': ['Candidato_1','Candidato_2','Candidato_3','Candidato_4', 'Nulo','Branco'],
        'Número de votos': [1,2,3,4,5,6]}
cand_df = pd.DataFrame(cand)

# Imprimindo o DataFrame
print("A hora de escolher o novo gerente da empresa chegou!\n Vamos votar.")
print("Dados para votação!")
print(cand_df)

# Digitação do voto, contagem e porcentagem
for i in range(1,n+1):

  # Validação do numero do candidato
  while True:
    # Adicione um try-except na entrada para evitar que o programa quebre caso o usuário insira algo que não seja um número.
    try:
      voto = int(input("Digite seu voto:")) # recebe o voto do funcionario
      if voto <= 0 or voto > 6:
        print("Valor inválido! Apenas números entre 1 a 6")
        continue # Volta para pedir a entrada
      break #sai do while quando todos os valores estiverem corretos

    except ValueError:
      print("Por favor, insira um número válido.") # Trata o erro de entrada inválida

#condicionais
  if voto == 1:
    candidato[0] +=1 #conta o numero de votos
  elif voto == 2:
    candidato[1] +=1
  elif voto ==3:
    candidato[2] +=1
  elif voto == 4:
    candidato[3] +=1
  elif voto == 5:
    nulo +=1
  elif voto ==6:
    branco +=1

# Calculando o total de votos e a porcentagem total usando a função soma do pandas
total_votos = sum(candidato)+nulo+branco
# calcula a participação em relação ao total
porcentagem=[
    round((candidato[0] / total_votos) * 100, 2),
    round((candidato[1] / total_votos) * 100, 2),
    round((candidato[2] / total_votos) * 100, 2),
    round((candidato[3] / total_votos) * 100, 2),
    round((nulo / total_votos) * 100, 2),
    round((branco / total_votos) * 100, 2)
    
] #Ajuste as porcentagens no DataFrame para mostrar com duas casas decimais, usando round().

# Criando uma visualização em formato de tabela via Data Frame

data = {'Candidatos': ['Candidato_1','Candidato_2','Candidato_3','Candidato_4', 'Nulo','Branco'],
        'Número de votos':candidato + [nulo,branco],
        'Porcentagem de votos em %':porcentagem}
df = pd.DataFrame(data)
# Calculando o total de votos e a porcentagem total usando a função soma do pandas


#incluindo uma nova linha na tabela
nova_linha= pd.DataFrame({'Candidatos': ['Total'], 'Número de votos': [total_votos],'Porcentagem de votos em %':[sum(porcentagem)] })

#concatenando a nova linha a tabela original concat(), este método é mais flexível e permite concatenar múltiplos DataFrames.
df = pd.concat([df, nova_linha], ignore_index=True) #O parâmetro ignore_index=True é útil para evitar índices duplicados ao adicionar novas linhas.

# Exibindo os resultados
print("\nResultado da votação:")
print(df)

Oi Raphael,

Parabéns por compartilhar suas soluções! 👏

Gostei da sua abordagem em cada um dos desafios.

No primeiro, você usou range(a, b) que funciona bem, mas lembre-se que o último número do intervalo não é incluído. Se você quiser incluir o b, use range(a, b + 1).

No segundo, sua lógica para calcular o crescimento populacional está correta. 👍

No terceiro, você usou um while dentro de um for para validar as notas, o que é uma ótima estratégia. 💪

No quarto, você está calculando a média corretamente, mas o programa não para de pedir temperaturas, mesmo depois de digitar -273. Você pode adicionar um if para verificar se a temperatura é -273 e usar break para sair do loop.

No quinto, sua lógica para calcular o fatorial está perfeita. 😎

No sexto, sua tabuada está funcionando como esperado.

No sétimo, sua verificação de números primos está funcionando bem, mas você poderia otimizar o loop verificando só até a raiz quadrada do número. 💪

No oitavo, gostei muito do uso do pandas para mostrar os resultados em tabela! Só sugiro adicionar uma mensagem mais clara quando a idade for inválida.

No nono, excelente tratamento de erros com try/except e ótima apresentação dos resultados com DataFrame! 😎 A validação dos votos está muito bem feita.

Para saber mais: Documentação oficial da função range() em Python.

Continue praticando e explorando novas soluções! 💻