Modifique o programa anterior para que leia o mesmo arquivo, permitindo adicionar mais dados ao arquivo. Se o mesmo nome for digitado duas vezes, altere os dados para a nova entrada.
Resposta:
##############################################################################
# Parte do livro Introdução à Programação com Python
# Autor: Nilo Ney Coutinho Menezes
# Editora Novatec (c) 2010-2024
# Quarta Edição - Março/2024 - ISBN 978-85-7522-886-9
#
# Site: https://python.nilo.pro.br/
#
# Arquivo: capitulo 09/exercicio-09-38.py
##############################################################################
import json
import os
def ler_notas():
notas = []
for i in range(4):
nota = float(input(f"Digite a {i+1}ª nota: "))
notas.append(nota)
return notas
def carregar_dados():
# Se o arquivo não existir, retorna uma lista vazia
if not os.path.exists("aluno_notas.json"):
return []
try:
with open("aluno_notas.json", "r") as arquivo:
return json.load(arquivo)
except json.JSONDecodeError:
return []
# Leitura dos dados existentes
alunos = carregar_dados()
# Leitura dos novos dados
nome = input("Digite o nome do aluno: ")
notas = ler_notas()
# Criação do dicionário com os novos dados
novo_aluno = {"nome": nome, "notas": notas}
# Verifica se o aluno já existe e atualiza, ou adiciona novo aluno
aluno_existente = False
for i, aluno in enumerate(alunos):
if aluno["nome"] == nome:
alunos[i] = novo_aluno
aluno_existente = True
break
if not aluno_existente:
alunos.append(novo_aluno)
# Salvando todos os dados no arquivo JSON
with open("aluno_notas.json", "w") as arquivo:
json.dump(alunos, arquivo, indent=4)
print("Dados do aluno salvos com sucesso no arquivo 'aluno_notas.json'.")