为了账号安全,请及时绑定邮箱和手机立即绑定

从转换为二维数组的两个管道分隔文件之间执行的操作中获得错误的输出

从转换为二维数组的两个管道分隔文件之间执行的操作中获得错误的输出

慕容3067478 2021-09-11 18:33:01
我是编码新手,我对这个问题的说明是:“给定以管道分隔的文件 F1 和 F2,其中 F1 包含具有字段 ACCOUNT NUM|PIN|BALANCE 的帐户,F2 包含交易指令 COMMAND|AMOUNT|ACCOUNT NUM|PIN,执行交易,将结果存储回 F1。COMMAND 字段将是 add 或 sub 指示从帐户中添加或减去。不提供正确 PIN 码或试图将帐户置于零以下的交易应被忽略。”我的输出是:1000|1234|100001020|2222|03000|3344|10002020|1234|90000正确的输出是:1000|1234|110001020|2222|03000|3344|02020|1234|90000我写的代码是:import sysF1= sys.argv[1] F2= sys.argv[2]records=[]with open(F1,'r') as fp:  content=fp.readlines()  for row in content:    recList=row.strip("\n").split('|')    records.append(recList)records2=[]with open(F2,'r') as fp:  content=fp.readlines()  for row in content:    recList2=row.strip("\n").split('|')    records2.append(recList2)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]:    if records2[i][0]=="add":      records[i][2]=int(records[i][2])+int(records2[i][1])    elif records2[i][0]=="sub":      if int(records[i][2])>=int(records2[i][1]):        records[i][2]=int(records[i][2])-int(records2[i][1])      else:        records[i][2]=records[i][2]  else:    breakprint(records)
查看完整描述

2 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

您尚未包含命令。输出行中显示的最后一个数字没有加法或减法,这就是为什么它们是错误的。


查看完整回答
反对 回复 2021-09-11
  • 2 回答
  • 0 关注
  • 187 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信