2
respostas

Desafio 09 - Escrevendo e lendo arquivos .csv

import csv

alunos = []  # lista vazia

print("Digite os nomes e notas dos alunos. Para sair, digite '*' no nome.")

while True:
    nome = input("Nome do aluno: ")
    if nome.lower() == '*':
        break
    nota = float(input("Nota do aluno: "))
    alunos.append([nome, nota])  # adiciona à lista

# grava no arquivo CSV
with open('alunos.csv', 'w', newline='') as f:
    escritor = csv.writer(f)
    escritor.writerow(['Nome', 'Nota'])   # cabeçalho
    escritor.writerows(alunos)            # escreve todos os alunos

# leitura e filtro
print("\nAlunos com bom desempenho (nota >= 7.0):")
with open('alunos.csv', 'r', newline='') as f:
    leitor = csv.reader(f)
    next(leitor)  # pula o cabeçalho
    for linha in leitor:
        nome, nota = linha[0], float(linha[1])
        if nota >= 7.0:
            print(f"{nome} - {nota}")
2 respostas

Inicei para que digitasse a tecla para sair, e depois resolvi mudar para *.

Olá, Osvaldo! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de listas para armazenar os dados dos alunos, utilizou muito bem o módulo csv para gravar e ler informações em arquivo e ainda compreendeu a importância do laço de repetição para controlar a entrada de dados.

Uma dica interessante para o futuro é aplicar o uso de DictWriter e DictReader para manipular os dados de forma mais clara. Assim:

import csv

with open("alunos.csv", "w", newline="") as f:
    fieldnames = ["Nome", "Nota"]
    escritor = csv.DictWriter(f, fieldnames=fieldnames)
    escritor.writeheader()
    escritor.writerow({"Nome": "Carlos", "Nota": 8.5})
    escritor.writerow({"Nome": "Maria", "Nota": 6.7})

with open("alunos.csv", "r", newline="") as f:
    leitor = csv.DictReader(f)
    for linha in leitor:
        print(f"{linha['Nome']} - {linha['Nota']}")

Isso faz com que cada linha seja tratada como um dicionário, facilitando a leitura e escrita dos dados.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!