Я прохожу курс в школе и у меня есть эта задача на Codio:
Для вашего последнего испытания в этом модуле вы загрузите два файла:
Первый файл F1 будет содержать информацию о некоторых учетных записях. Он будет разделен вертикальной чертой и будет иметь одну запись в строке со следующими полями:
ACCOUNT NUMBER | PIN CODE | BALANCE
Второй файл F2 будет содержать инструкции: по одной на каждой строке. Инструкция будет выглядеть так:
COMMAND | AMOUNT | ACCOUNT NUMBER | PIN CODE
COMMAND
будет добавлено или добавлено. Если команда add, вы добавите СУММУ к БАЛАНСУ в файлах аккаунта F1. Если команда суб, вы будете вычитать.
Однако существует ряд причин, по которым вам может потребоваться отклонить транзакцию. Если вас попросят вычесть сумму, которая поставит счет ниже нуля, или если предоставленный вам пин-код не совпадает с пин-кодом в записи учетной записи, транзакция будет проигнорирована.
Транзакции по учетным записям Учитывая файлы F1 и F2, разделенные вертикальной чертой, где F1 содержит учетные записи с полями ACCOUNT NUM|PIN|BALANCE
, а F2 содержит инструкции по транзакциям COMMAND|AMOUNT|ACCOUNT NUM|PIN
, выполнять транзакции, сохраняя результаты обратно в F1.
Поле COMMAND
будет добавлено или добавлено, указывая на добавление или вычитание из учетной записи.
Транзакции, которые не предоставляют правильный PIN-код или пытаются понизить счет ниже нуля, должны быть проигнорированы.
Это мой код для задачи:
records = []
with open(F1,'r') as account_info:
content = account_info.readlines()
for row in content:
recordList = row.strip("\n").split('|')
records.append(recordList)
records2 = []
with open(F2,'r') as user_input:
content2 = user_input.readlines()
for row in content2:
recordList2 = row.strip("\n").split('|')
records2.append(recordList2)
for i in range(len(records)):
row = records[i]
for i in range(len(records2)):
row = records2[i]
for row in records and records2:
if records[i][1] == records2[i][3] and records2[i][0] == "add":
newBalance = int(records[i][2]) + int(records2[i][1])
records[i][2] = str(newBalance)
elif records2[i][0] == "sub" and int(records[i][2]) >= int(records2[i][1]):
newBalance = int(records[i][2]) - int(records2[i][1])
records[i][2] = str(newBalance)
output_records = ""
i = 0
while i <= len(records):
output_records += '|'.join(records[i])
if i != len(records):
output_records += '\n'
i += 1
if i == len(records):
break
outputFile = open(F1, 'w')
outputFile.write(output_records)
outputFile.close
Это то, что я получаю для вывода, который отключен на одно число.
Your program output did not match the expected output.
Your output:
1000|1234|10000
1020|2222|0
3000|3344|0
2020|1234|90000
Expected output:
1000|1234|11000
1020|2222|0
3000|3344|0
2020|1234|90000
Может ли кто-нибудь указать мне направление, в котором я ошибаюсь? Спасибо.
print(records)
после того, как вы закончите читать (иprint(records2)
тоже)? - person Itamar Mushkin   schedule 08.06.2020