Ajuda em script

1 resposta
S

Como faço para retornar as notas da função cadastrar, para a calcular a media dentro da função listar_notas?

import subprocess

def cadastrar():

nota1 = float(input("Nota I: "))

nota2 = float(input("Nota II: "))

nota3 = float(input("Nota III: "))

nota4 = float(input("Nota IV: "))
arquivo = open('teste.txt', 'a')
arquivo.write('{},{},{},{}\n'.format(nota1, nota2, nota3, nota4))
arquivo.close()

subprocess.run(["notepad" , "teste.txt"])

def listar_notas():

arquivo = open('teste.txt', 'r')
linhas = arquivo.readlines()
arquivo.close()
print("{:20}{:20}{:20}{:20}".format("Nota I", "Nota II", "Nota III", "Nota IV"))

for linha in linhas:
    nota1, nota2, nota3, nota4 = linha.strip().split(",")
    print("{:20}{:20}{:20}{:20}".format(nota1, nota2, nota3, nota4))
while True:

print(\n1. Cadastrar Notas)

print(2. Listar Notas | Media)

print(3. Sair)

opcao = int(input())

if opcao == 1:

cadastrar()

if opcao == 2:

listar_notas()

if opcao == 3:

break

1 Resposta

wldomiciano

Posso ter entendido errado, mas uma possível solução para imprimir a média seria assim:

def listar_notas():
  arquivo = open('teste.txt', 'r')
  linhas = arquivo.readlines()
  arquivo.close()
  print("{:20}{:20}{:20}{:20}{:20}".format("Nota I", "Nota II", "Nota III", "Nota IV", "Media"))
  for linha in linhas:
      notas = [float(x) for x in linha.strip().split(",")]
      print("{:20}{:20}{:20}{:20}{:20}".format(notas[0], notas[1], notas[2], notas[3], sum(notas) / 4))

Se estiver usando Python 3, aquele print poderia ser assim:

print("{:20}{:20}{:20}{:20}{:20}".format(*notas, sum(notas) / 4))
Criado 7 de setembro de 2019
Ultima resposta 7 de set. de 2019
Respostas 1
Participantes 2