我正在通过学校学习一门课程,并在 Codio 上遇到了这个挑战:
对于本单元的最后一个挑战,您将加载两个文件:
第一个文件 F1 将包含有关某些帐户的信息。它将以竖线分隔,每行有一条记录,包含以下字段:
ACCOUNT NUMBER | PIN CODE | BALANCE
第二个文件 F2 将包含说明:每行一个。说明将如下所示:
COMMAND | AMOUNT | ACCOUNT NUMBER | PIN CODE
COMMAND
将是添加或子。如果命令为 add,您将在帐户文件 F1 中将 AMOUNT 添加到 BALANCE。如果命令是 sub,您将减去。
但是,您可能需要拒绝交易的原因有很多。如果您被要求减去一笔金额以使账户低于零,或者您提供的密码与账户记录中的密码不匹配,则该交易将被忽略。
账户交易给定管道分隔的文件 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
有人可以指出我出错的方向吗?谢谢。