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

Exercicios 6-8

  1. Para atender a uma demanda de uma instituição de ensino para a análise do desempenho de seus(suas) estudantes, você precisa criar uma função que receba uma lista de 4 notas e retorne:
    maior nota
    menor nota
    média
    situação (Aprovado(a) ou Reprovado(a))
    Para testar o comportamento da função, os dados podem ser exibidos em um texto:
    "O(a) estudante obteve uma média de [media], com a sua maior nota de [maior] pontos e a menor nota de [menor] pontos e foi [situacao]"
for i in range(1,5):
  nota = float(input(f'Informe a {i}o nota: '))

notas.append(nota)

def boletim(notas):
  maior_nota = max(notas)
  menor_nota = min(notas)
  media = sum(notas)/len(notas)
  if media >= 6:
    situacao = 'Aprovado(a)'
  else:
    situacao = 'Reprovado(a)'
  return (maior_nota, menor_nota, media, situacao)

maior_nota, menor_nota, media, situacao = boletim(notas)
print(f"O(a) estudante obteve uma media de {media}, com a sua maior nota de {maior_nota} pontos e a menor nota de {menor_nota} pontos e foi {situacao}.")
  1. Você recebeu uma demanda para tratar 2 listas com os nomes e sobrenomes de cada estudante concatenando-as para apresentar seus nomes completos na forma Nome Sobrenome. As listas são:
    nomes = ["joão", "MaRia", "JOSÉ"]
    sobrenomes = ["SILVA", "souza", "Tavares"]
    O texto exibido ao fim deve ser parecido com:
    "Nome completo: Ana Silva"
    Dica: utilize a função map para mapear os nomes e sobrenomes e as funções de string para tratar o texto.
nomes = ["joão", "MaRia", "JOSÉ"]
sobrenomes = ["SILVA", "souza", "Tavares"]

nome_completo = list(map(lambda x, y: x.capitalize() + ' ' + y.capitalize(), nomes, sobrenomes))

for nome in nome_completo:
  print(f"Nome completo: {nome}")
  1. Como cientista de dados em um time de futebol, você precisa implementar novas formas de coleta de dados sobre o desempenho de jogadores e do time como um todo. Sua primeira ação é criar uma forma de calcular a pontuação do time no campeonato nacional a partir dos dados de gols marcados e sofridos em cada jogo.
    Escreva uma função chamada calcula_pontos que recebe como parâmetros duas listas de números inteiros, representando os gols marcados e sofridos pelo time em cada partida do campeonato. A função deve retornar a pontuação do time e o aproveitamento em percentual, levando em consideração que a vitória vale 3 pontos, o empate vale 1 ponto e a derrota 0 pontos.
    Observação: se a quantidade de gols marcados numa partida for maior que a de sofridos, o time venceu. Caso seja igual, o time empatou e se for menor, o time perdeu. Para calcular o aproveitamento devemos fazer a razão entre a pontuação do time pela pontuação máxima que ele poderia receber.
    Para teste, utilize as seguintes listas de gols marcados e sofridos:
    gols_marcados = [2, 1, 3, 1, 0]
    gols_sofridos = [1, 2, 2, 1, 3]
    Provável texto exibido:
    "A pontuação do time foi de [pontos] e seu aproveitamento foi de [aprov]%"
gols_marcados = [2, 1, 3, 1, 0]
gols_sofridos = [1, 2, 2, 1, 3]

def calcula_pontos(gols_marcados, gols_sofridos):
  pontos = 0
  for i in range(len(gols_marcados)):
    if gols_marcados[i] > gols_sofridos[i]:
      pontos += 3
    elif gols_marcados[i] == gols_sofridos[i]:
      pontos += 1
    else:
      pontos += 0
  aproveitamento = 100 * pontos/ (len(gols_marcados)* 3)
  return (pontos, aproveitamento)

pontos, aproveitamento = calcula_pontos(gols_marcados, gols_sofridos)
print(f"A pontuação do time foi de {pontos} e seu aproveitamento foi de {aproveitamento}%")

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta
solução!

Oi Valentina, tudo bem? 😊

Vejo que você está praticando bastante com funções e manipulação de listas em Python, o que é excelente! Vamos dar uma olhada nos seus exercícios.

No primeiro exercício, sobre o boletim dos estudantes, seu código está quase perfeito! A lógica para calcular a maior nota, menor nota, média e situação está correta. A única coisa que você precisa ajustar é a inicialização da lista notas antes de começar a adicionar as notas a ela.

notas = [] # Inicialize a lista aqui
for i in range(1,5):
  nota = float(input(f'Informe a {i}o nota: '))
  notas.append(nota)

def boletim(notas):
  maior_nota = max(notas)
  menor_nota = min(notas)
  media = sum(notas)/len(notas)
  if media >= 6:
    situacao = 'Aprovado(a)'
  else:
    situacao = 'Reprovado(a)'
  return (maior_nota, menor_nota, media, situacao)

maior_nota, menor_nota, media, situacao = boletim(notas)
print(f"O(a) estudante obteve uma media de {media}, com a sua maior nota de {maior_nota} pontos e a menor nota de {menor_nota} pontos e foi {situacao}.")

Para o segundo exercício, a concatenação de nomes e sobrenomes usando map e lambda está muito boa! A utilização de .capitalize() é a forma ideal para garantir que o nome e sobrenome fiquem com a primeira letra maiúscula e o restante minúsculo, como esperado.

nomes = ["joão", "MaRia", "JOSÉ"]
sobrenomes = ["SILVA", "souza", "Tavares"]

nome_completo = list(map(lambda x, y: x.capitalize() + ' ' + y.capitalize(), nomes, sobrenomes))

for nome in nome_completo:
  print(f"Nome completo: {nome}")

No terceiro exercício, o cálculo de pontos e aproveitamento do time, sua função calcula_pontos está correta e bem estruturada. A lógica para determinar vitórias, empates e derrotas, e o cálculo do aproveitamento estão precisos.

gols_marcados = [2, 1, 3, 1, 0]
gols_sofridos = [1, 2, 2, 1, 3]

def calcula_pontos(gols_marcados, gols_sofridos):
  pontos = 0
  for i in range(len(gols_marcados)):
    if gols_marcados[i] > gols_sofridos[i]:
      pontos += 3
    elif gols_marcados[i] == gols_sofridos[i]:
      pontos += 1
    # else: # A linha 'pontos += 0' é opcional, pois não altera o valor
    #   pontos += 0
  aproveitamento = 100 * pontos / (len(gols_marcados) * 3)
  return (pontos, aproveitamento)

pontos, aproveitamento = calcula_pontos(gols_marcados, gols_sofridos)
print(f"A pontuação do time foi de {pontos} e seu aproveitamento foi de {aproveitamento:.2f}%") # Adicionado formatação para o aproveitamento

Notei que adicionei uma formatação :.2f ao aproveitamento para exibir o percentual com duas casas decimais, o que pode ser mais agradável visualmente. 👍

Continue praticando e explorando essas funcionalidades, Valentina! Você está no caminho certo. 💪

🎓 Para saber mais: