1
resposta

Desafio: hora da prática_Estrutura de dados_1 à 6

1

# Dados de gastos
gastos = [2172.54, 3701.35, 3518.09, 3456.61, 3249.38, 2840.82, 3891.45, 3075.26, 2317.64, 3219.08]

# Calculamos a média encontrando o valor total de gastos com sum
# e a quantidade total de compras realizadas com len
total_gastos = sum(gastos)
quantidade_compras = len(gastos)
media_gastos = total_gastos / quantidade_compras
# Resultado
print(f'A média de gastos é {media_gastos} reais.')

A média de gastos é 3144.222 reais.

2

# Dados de gastos
gastos = [2172.54, 3701.35, 3518.09, 3456.61, 3249.38, 2840.82, 3891.45, 3075.26, 2317.64, 3219.08]

# Variável que vai contar quantas compras foram feitas acima de 3000
contador_acima_3000 = 0
# Usamos o laço para ler a lista de gastos
for gasto in gastos:
  # Verificamos se o elemento está acima de 3000
  if gasto > 3000:
    # Acrescentamos mais um no contador, caso tenha algum valor acima de 3000
    contador_acima_3000 += 1
    
# Quantidade Compras
# Variável que vai ser utilizada para o cálculo da porcentagem
quantidade_compras = len(gastos)	


# Com a contagem conseguimos calcular a porcentagem de valores acima de 3000 entre todas as compras
porcentagem_acima_3000 = 100 * (contador_acima_3000) / (quantidade_compras) 

# Resultado
print(f'{contador_acima_3000} compras foram acima de R$3000,00.')
print(f'{porcentagem_acima_3000}% dos gastos foram acima de R$3000,00.')

7 compras foram acima de R$3000,00.
70.0% dos gastos foram acima de R$3000,00.

3

# Lista que irá armazenar os 5 números inteiros
lista_numeros = []

# Criamos um laço que vai iterar 5 vezes para receber os 5 números
for i in range(0, 5):
  # Coletamos o valor e inserimos na lista por 5 vezes
  numero = int(input('Digite um número inteiro: '))
  lista_numeros.append(numero)
#Resultado
print(f'Lista de números inseridos: {lista_numeros}')

Digite um número inteiro: 2
Digite um número inteiro: 4
Digite um número inteiro: 6
Digite um número inteiro: 8
Digite um número inteiro: 10
Lista de números inseridos: [2, 4, 6, 8, 10]

4

# Lista que irá armazenar os 5 números inteiros
lista_numeros = []

# Criamos um laço que vai iterar 5 vezes para receber os 5 números
for i in range(0, 5):
  # Coletamos o valor e inserimos na lista por 5 vezes
  numero = int(input('Digite um número inteiro: '))
  lista_numeros.append(numero)
# Usamos da lógica de partição para imprimir o resultado
print(f'Lista de números invertida: {lista_numeros[::-1]}')

Digite um número inteiro: 10
Digite um número inteiro: 20
Digite um número inteiro: 30
Digite um número inteiro: 40
Digite um número inteiro: 50
Lista de números invertida: [50, 40, 30, 20, 10]

5

# Coletamos o números
numero = int(input('Digite um número inteiro: '))
# Lista para receber os números primos
lista_primos = []
# Laço que vai rodar por todos os números abaixo do número digitado
for num in range(2, numero):
  # Primo é uma bandeira, ela permite sabermos se o valor analisado é ou não primo
  primo = True 
  # Testamos se todos os números abaixo do especificado no primeiro laço podem
  # gerar uma divisão exata
  for teste_divisiveis in range(2, num):
    if num % teste_divisiveis == 0:
      # Caso seja divisivel por algum número entendemos que 
      # o num não é primo e finalizamos o laço interno com break
      primo = False
      break
  # A condição se torna o resultado booleno de primo: False, ignoramos o condicional
  # True, executamos o bloco do if
  if primo:
    lista_primos.append(num)
# Resultado
print(f'Lista de números primos: {lista_primos}')

Digite um número inteiro: 10
Lista de números primos: [2, 3, 5, 7]

6

# Coletamos a data
dia = int(input('Digite o dia: '))
mes = int(input('Digite o mês: '))
ano = int(input('Digite o ano: '))

# Análise de fevereiro
if mes == 2:
  # Verificamos se é ou não um ano bissexto
  if ano % 4 == 0 and (ano % 400 == 0 or ano % 100 != 0):
    dias_fevereiro = 29
  else:
    dias_fevereiro = 28
  # Verificamos se o dia colocado corresponde ao máximo de dias de fevereiro
  if dia >= 1 and dia <= dias_fevereiro:
    print('Data válida')
  else:
    print('Data inválida')
# Verificamos meses terminados em 31 dias
elif mes in [1, 3, 5, 7, 8, 10, 12]:
  if dia >= 1 and dia <= 31:
    print('Data válida')
  else:
    print('Data inválida')
# Verificamos meses terminados em 30 dias
elif mes in [4, 6, 9, 11]:
  if dia >= 1 and dia <= 30:
    print('Data válida')
  else:
    print('Data inválida')
# Caso o mês não esteja entre 1 e 12
else:
  print('Data inválida')
  
  Digite o dia: 29
Digite o mês: 02
Digite o ano: 1980
Data válida

Digite o dia: 31
Digite o mês: 05
Digite o ano: 1980
Data válida

Digite o dia: 30
Digite o mês: 06
Digite o ano: 1980
Data válida

Digite o dia: 31
Digite o mês: 04
Digite o ano: 2025
Data inválida
1 resposta

Olá, Wallace! Tudo bem?

Fico feliz em poder acompanhar seu empenho em desenvolver os desafios propostos neste curso de Python! Observei que você compreendeu o uso das funções sum() e len(). Além disso, utilizou bem as estruturas condicionais com if e laços de repetição com for. Continue compartilhando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para a comunidade.

Para aprimorar ainda mais o seu código, você pode formatar a variável media_gastos de forma que ela apresente apenas duas casas decimais, basta acrescentar :.2f ao final da variável. Dessa forma:

print(f'A média de gastos é R$ {media_gastos:.2f}')

Resultado:

A média de gastos é R$ 3144.22

Reparou em algo diferente? Também é uma boa prática usar o símbolo monetário em questão, o Real nesse caso.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!