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

[Projeto] Desafio resposta

Todas as resoluções dos exercicios estão no meu notebook: https://colab.research.google.com/drive/1WQq4ACl2_H5TAWJEGX6YwCCQQf3is-gX?usp=sharing

Na questão 2, eu fiz de duas formas:

num = int(input("Digite um número inteiro de 1 a 10: "))

def tabuada(num):
  print(f"Tabuada do {num}:")
  for i in range(11):
    resultado = num * i
    print(f"{num} x {i} = {resultado}")

tabuada(num)
def tabuada(num):
  print(f"Tabuada do {num}:")
  print("-" * 20)
  for i in range(11):
    resultado = num * i
    print(f"{num} x {i:2} = {resultado:3}")
  print("-" * 20)

while True:
  try:
    num = int(input("Digite um número inteiro de 1 a 10: "))
    if 1 <= num <= 10:
      tabuada(num)
      break
    else:
      print("Número inválido! Digite um número entre 1 e 10.\n")

  except ValueError:
    print("Isso não é um número inteiro! Tente novamente.\n")

Na questão 5, eu fiz de duas formas:

def calcular_nota_skatista():
  notas = []

  for i in range(1, 6):
    nota = float(input(f"Digite a {i}ª nota: "))
    notas.append(nota)

  notas_ordenadas = sorted(notas) # Ordena do menor para maior
  notas_validas = notas_ordenadas[1:-1] # Remove a primeira (menor) e última (maior)

  # Calcula a média das 3 notas restantes
  media = sum(notas_validas) / len(notas_validas)

  print(f"Nota da manobra: {media:.1f}")

calcular_nota_skatista()
def calcular_nota_skatista():
  notas = [float(input(f"Digite a {i}ª nota: ")) for i in range(1, 6)]

  media = (sum(notas) - max(notas) - min(notas)) / 3

  print(f"Nota da manobra: {media:.1f}")

calcular_nota_skatista()

Eu amei fazer a ultima questão:

def gasto_hotel(dias):
  return dias * 150

def gasto_gasolina(distancia):
  consumo = 14
  preco = 5
  return (distancia * 2 / consumo) * preco

def gasto_passeio(cidade, dias):
  gastos = {
      "salvador": 200,
      "fortaleza": 400,
      "natal": 250,
      "aracaju": 300
  }
  return gastos[cidade.lower()] * dias

print("-" * 50)
print("Sistema de gastos de viagem")
print("-" * 50)

cidades_disponiveis = {
    "salvador": 850,
    "fortaleza": 800,
    "natal": 300,
    "aracaju": 550
}

cidade = input("Digite a cidade (Salvador, Fortaleza, Natal, Aracaju): ").lower()

if cidade in cidades_disponiveis:
  dias = int(input("Digite a quantidade de dias: "))
  distancia = cidades_disponiveis[cidade]

  hotel = gasto_hotel(dias)
  gasolina = gasto_gasolina(distancia)
  passeio = gasto_passeio(cidade, dias)

  total = hotel + gasolina + passeio

  print("\n" + "-" * 50)
  print(f"DETALHAMENTO - {cidade.capitalize()}")
  print("-" * 50)
  print(f"Hotel:           R$ {hotel:.2f}")
  print(f"Gasolina:        R$ {gasolina:.2f}")
  print(f"Passeio:         R$ {passeio:.2f}")
  print("-" * 50)
  print(f"Total:           R$ {total:.2f}")
  print("-" * 50)
else:
  print("Cidade inválida")
1 resposta
solução!

Olá, Maria de Nazaré! Tudo bem?

Que resoluções fantásticas! É nítida a sua evolução no curso. Você não apenas resolveu os desafios, como aplicou conceitos de refatoração ao apresentar duas formas de fazer a mesma tarefa. Isso demonstra um domínio técnico excelente sobre como tornar o código mais "limpo" (clean) e eficiente.

Gostaria de destacar alguns pontos brilhantes nas suas escolhas lógicas para te ajudar a entender por que essas práticas são tão valorizadas no mercado de Data Science:


1. A Evolução da Tabuada (Questão 2)

Na sua segunda versão, você utilizou o Tratamento de Exceções (try-except) e a Validação de Dados.

  • Por que isso é importante? Em análise de dados, muitas vezes recebemos arquivos com erros. Usar try-except evita que o seu programa pare de funcionar (crash) no meio de um processamento longo por causa de um dado inválido.
  • Além disso, o uso de f"{num} x {i:2} = {resultado:3}" mostra que você já domina a formatação de strings, garantindo que os números fiquem alinhados visualmente.

2. A Inteligência por trás da Nota do Skatista (Questão 5)

Aqui você brilhou na segunda forma!

  • Slicing ([1:-1]): Na primeira versão, você usou o fatiamento de listas, que é uma ferramenta essencial no Python para filtrar dados.
  • Lógica Matemática: Na segunda versão, você usou (sum(notas) - max(notas) - min(notas)) / 3.

Dica Pro: Esta segunda forma é muito mais performática! Você economiza linhas de código e evita criar cópias da lista na memória, algo vital quando estamos lidando com Big Data.


3. Modularidade no Sistema de Viagem

A última questão ficou digna de um sistema real. Você aplicou o conceito de Modularidade, separando cada tipo de custo em uma função específica.

  • Dicionários: O uso de cidades_disponiveis como um dicionário para buscar a distância e o custo por dia é a prática recomendada para evitar uma sequência infinita de if/else.
  • Escalabilidade: Se você quisesse adicionar mais 10 cidades, bastaria mexer no dicionário, sem precisar alterar a lógica das funções.

Maria, seu código está muito bem organizado e fácil de ler. Continue explorando essas formas alternativas de resolver o mesmo problema, pois é assim que desenvolvemos o pensamento crítico na programação.

Espero que possa ter lhe ajudado!

Uma pergunta: No sistema de viagem, o que você faria se a gasolina subisse de preço? Onde seria o lugar mais estratégico no seu código para atualizar esse valor de forma que ele mude para todas as cidades de uma vez?