Моя цель - взять существующий файл, содержащий имена и оценки учеников в классе, и заменить баллы каждого ученика по одному. Сначала я открываю файл в режиме чтения и создаю словарь для ученика, затем запрашиваю новую оценку у пользователя и заменяю значение в словаре. Затем я хочу заменить строки в файле новыми оценками, однако мне удается только добавить их в существующие оценки.
Это мой код:
def editStudent(classfile):
with open(f'Class {classfile}.txt','r+') as file:
studentNo = int(file.readline())
data = file.readlines()
for i in range(0,studentNo):
piece = data[i]
contents = piece.split(',')
name = contents[0]
score = contents[1]
readin = {}
readin[name] = int(score)
replacement = int(input('Please enter a new score for ' + name + ' > '))
readin[name] = int(replacement)
for key,value in readin.items():
studentdata = '{},{}\n'.format(key, value)
file.close()
with open(f'Class {classfile}.txt','w') as file:
file.write(str(studentNo) + '\n')
file.write(studentdata)
Вот как выглядит текстовый файл:
2
Max Sinclair,100
Random Guy,50
В первой строке файла указывается количество учеников в классе, переменная, которую я использую для создания al oop внутри моей функции, чтобы сообщить Программа, сколько студентов необходимо заменить.
Это вывод, когда я запускаю программу и вводю новые оценки для каждого учащегося:
2
Max Sinclair,100
Random Guy,50
Max Sinclair,99
Random Guy,49