我对Python完全不熟悉,因此我为错误的代码提前道歉。我试图替换列表中字符串的子字符串,但返回的列表是相同的。在代码中,有一个帐户列表和用户提供的另一个事务列表,我应该检查命令是add还是sub,以添加到余额还是从中减去。以下是两个列表的格式:
F1:
ACCOUNT NUMBER | PIN CODE | BALANCE
F2:
COMMAND | AMOUNT | ACCOUNT NUMBER | PIN CODE
下面是我正在使用的代码:
import sys
F1 = sys.argv[1]
F2 = sys.argv[2]
def file_reader(filePath):
file = open(filePath, 'r')
data = file.read()
file.close()
return data
def splitter(str):
return str.split()
def joiner(list):
return '\n'.join(list)
def file_writer(filePath, str):
file = open(filePath, 'w')
file.write(str)
def make_transaction(accounts, transactions):
for i in range(len(transactions)):
# Check account number & pin
if accounts[i][0:4] == transactions[i][9:13]:
if accounts[i][5:9] == transactions[i][-4:]:
# Check whether the user wants to add or subtract from balance
if 'add' in transactions[i]:
balance = int(accounts[i][10:])
transaction = int(transactions[i][4:8])
balance += transaction
balanceStr = str(balance)
accounts[i].replace(accounts[i][10:], balanceStr)
elif 'sub' in transactions[i]:
balance = int(accounts[i][10:])
transaction = int(transactions[i][4:8])
if balance > transaction:
balance -= transaction
balanceStr = str(balance)
accounts[i].replace(accounts[i][10:], balanceStr)
return accounts
file1 = fileReader(F1)
file1Data = splitter(file1)
file2 = fileReader(F2)
file2Data = splitter(file2)
print(file1Data)
print(file2Data)
print(makeTransaction(file1Data, file2Data))
这是输出:
Program Failed for Input: /tmp/a1 /tmp/tx
Expected Output:
Your Program Output: ['1000|1234|10000', '1020|2222|0', '3000|3344|1000', '2020|1234|90000']
['add|1000|1000|1234', 'sub|1000|1020|2222', 'sub|1000|3000|3344']
['1000|1234|10000', '1020|2222|0', '3000|3344|1000', '2020|1234|90000']
任何帮助都将不胜感激。多谢各位
.replace
对于您试图解决的问题来说是一个危险的用例。它正在使用模式匹配来进行更改,如果您的子字符串,即balance[10:]
意外地与balance[0:5]
匹配,您将悄悄地得到非常不可预测的结果相反,我建议你更换
与
另外,假设您的输入数据被
|
分割,您应该为输入数据创建数据保持器,而不是使用字符串,因为字符串是易变的,如果您的客户执行了非常大的事务,您的代码可能会开始不可预测地运行相反,我会按照
account_number, pin_code, balance = '1000|1234|10000'.split('|')
的思路做一些事情,并将数据加载到一个列表中,其中每一行表示一个帐户或一个事务这应该完全重写:
例如,我宁愿这样做:
等等。。。使用索引处理字符串是非常错误的
相关问题 更多 >
编程相关推荐