Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Exercício matplotlib

Segue a resolução do exercício conforme o enunciado, no entanto, eu fiquei com duas dúvidas, que colocarei no fim do documento após a inserção do meu código.

#importação das funções randrange e seed para gerar valores aleatórios
from random import randrange, seed

#importação da função matplotlib para criação de gráficos
import matplotlib.pyplot as plt

#criação de lista vazia para receber as notas aleatórias
notas_matematica = []

#criação de variável com função de entrada para receber o nome do aluno
nome_aluno = input('Digite o nome do aluno: ')

#criação de string para poder passar como título do gráfico
monta_titulo_grafico = 'Gráfico das notas do aluno: '+nome_aluno

#criação de função para imprimir as notas aleatórias
def lanca_notas_aleatorias():

  #chamada a função seed para poder sempre pegar os mesmos valores
  seed(11)

  #criação de loop for para pegar as notas aleatórias e inserir na lista vazia
  for notas in range(8):
      notas_matematica.append(randrange(0,11))

  #retorno da lista notas_matematica com os valores das notas
  return notas_matematica

#criação da função para poder montar o gráfico
def montar_grafico(notas):

  #criação de lista com valores de 1 a 8 para montar o eixo X
  x = list(range(1,9))

  #criação de variável com os valores das notas para preencher o eixo Y
  y = notas

  #criação do gráfico com destacamento para os pontos das notas
  plt.plot(x,y, marker='o')

  #passando o nome do título para o gráfico
  plt.title(monta_titulo_grafico)

  #criação de um nome para o eixo X
  plt.xlabel('Provas')

  #criação de um nome para o eixo Y
  plt.ylabel('Notas')

  #chamada a função show para mostrar o gráfico
  plt.show()

#chamada a função impressao_notas para retornar o valor das notas
lanca_notas_aleatorias()

#criação da variável notas para receber os valores das notas da função
notas = notas_matematica

#chamada a função para montar o gráfico
montar_grafico(notas)

Dúvidas:

1) É possível que eu passasse o nome para ser usado no título do gráfico de outra forma? Pois quando eu tentava passar a string dentro do título do gráfico dava erro, quero dizer, os erros davam na chamada da função plt.title().

2) Há outra maneira de eu passar o valor de uma variável de função para uma variável global sem ser com o uso do return ao fim da função? Isto é, no exemplo acima, por exemplo, a variável global notas_matematica receber o valor de dentro da função lanca_notas_aleatorias

2 respostas
solução!

Olá, Bruno, tudo bom?

1-Uma maneira de passar o nome do título sem colocar dentro de uma variável, seria deixar a própria string dentro do .title() como você deu a ideia. Desta forma:

plt.title('Gráfico das notas do aluno:' + nome_aluno)

2- No caso do exemplo do seu return é sempre uma boa prática utilizá-lo, assim deixamos claro o que queremos de saída de cada função, mas no seu exemplo como notas_matematica é uma lista declarada fora da função, se passássemos a função sem nada dentro do return ou até mesmo sem return, não faria diferença. Pois a função somente adiciona números dentro da lista.

Desta forma:

def lanca_notas_aleatorias():

  seed(11)

  for notas in range(8):
      notas_matematica.append(randrange(0,11))

Se ainda tiver alguma dúvida, estou por aqui. Ótimos estudos e grande abraço!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Ok, obrigado! Pontos esclarecidos.