回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>下面是我用来计算支票簿交易的一个类。我的问题在于<code>elif</code>语句,在这里我检查是<code>row[0] == "starting"</code>还是<code>"ending"</code>。在csv文件(我也将复制和粘贴)中,它在<code>row[0]</code>中清楚地声明这些单词在那里,但是我的<code>startAmt</code>和<code>endAmt</code>在运行时都继续等于<code>0</code></p>
<pre><code>class Checkbook:
"""Checkbook class for list of check transactions"""
def __init__(self, filename):
"""initializer for Checkbook class"""
self.name = filename
self.debitList = []
self.creditList = []
self.startAmt = 0
self.endAmt = 0.0
with open(filename) as csvFile:
readCSV = csv.reader(csvFile, delimiter = ',')
for row in readCSV:
try:
if (row[2] == " debit"):
debitAmt = row[3]
self.debitList.append(debitAmt)
elif (row[2] == " credit"):
creditAmt = row[3]
self.creditList.append(creditAmt)
elif (row[0] == "starting"):
self.startAmt += row[1]
elif (row[0] == "ending"):
self.endAmt += row[1]
except IndexError:
pass
</code></pre>
<p>这是.csv文件:</p>
<pre><code>starting, 1000
3/1/16, Valvoline, debit, 70.00
3/1/16, Panera Bread, debit, 12.59
3/4/16, ShopRite Groceries, debit, 100.69
3/5/16, Paycheck, credit, 248.39
3/10/16, Whole Paycheck Groceries, debit, 103.23
3/12/16, Fancy Restaurant, debit, 150.34
3/18/16, Burger King, debit, 8.34
3/19/16, Paycheck, credit, 248.39
3/23/16, ATM Withdrawal, debit, 40.0,
3/24/16, Whole Paycheck Groceries, debit, 248.39
3/28/16, Fancy Restaurant, debit, 112.34
ending, 651.36
</code></pre>
<p>如果有人知道为什么没有注册这些字符串,那么请让我知道</p>