Can you please help me fix the (TypeError: list indices must be integers or slices, not str) in the code
Can you please help me fix the (TypeError: list indices must be integers or slices, not str) in the code
entry = [["D 300"],["D 300"],["W 200"],["D 100"]]
def bankbalance(entry):
deposits = [float(entry[ent][0][2:]) for ent in entry if ("D" in entry[ent][0])]
withdrawals = [float(entry[ent][0][2:]) for ent in entry if ("W" in entry[ent][0])]
global balance
balance = sum(deposits) - sum(withdrawals)
bankbalance(entry)
Print(f'Current balance is {balance}')
TypeError Traceback (most recent call last)
<ipython-input-40-003e60035a3a> in <module>
9 balance = sum(deposits) - sum(withdrawals)
10
---> 11 bankbalance(entry)
12 Print(f'Current balance is {balance}')
13
<ipython-input-40-003e60035a3a> in bankbalance(entry)
1 entry = ["D 300","D 300","W 200","D 100"]
2 def bankbalance(entry):
----> 3 deposits = [float(entry[ent][0][2:]) for ent in entry if ("D" in entry[ent][0])]
4 withdrawals = [float(entry[ent][0][2:]) for ent in entry if ("W" in entry[ent][0])]
5
<ipython-input-40-003e60035a3a> in <listcomp>(.0)
1 entry = ["D 300","D 300","W 200","D 100"]
2 def bankbalance(entry):
----> 3 deposits = [float(entry[ent][0][2:]) for ent in entry if ("D" in entry[ent][0])]
4 withdrawals = [float(entry[ent][0][2:]) for ent in entry if ("W" in entry[ent][0])]
5
TypeError: list indices must be integers or slices, not str
ent
不是索引,是entry的一个元素,所以不需要entry[ent][0][2:]
,需要的是ent[0][2:]
.
固定代码:
entry = [["D 300"],["D 300"],["W 200"],["D 100"]]
def bankbalance(entry):
deposits = [float(ent[0][2:]) for ent in entry if ("D" in ent[0])]
withdrawals = [float(ent[0][2:]) for ent in entry if ("W" in ent[0])]
global balance
balance = sum(deposits) - sum(withdrawals)
bankbalance(entry)
print(f'Current balance is {balance}')
输出:500.0
entry = [["D 300"],["D 300"],["W 200"],["D 100"]]
def bankbalance(entry):
deposits = [float(entry[ent][0][2:]) for ent in entry if ("D" in entry[ent][0])]
withdrawals = [float(entry[ent][0][2:]) for ent in entry if ("W" in entry[ent][0])]
global balance
balance = sum(deposits) - sum(withdrawals)
bankbalance(entry)
Print(f'Current balance is {balance}')
TypeError Traceback (most recent call last)
<ipython-input-40-003e60035a3a> in <module>
9 balance = sum(deposits) - sum(withdrawals)
10
---> 11 bankbalance(entry)
12 Print(f'Current balance is {balance}')
13
<ipython-input-40-003e60035a3a> in bankbalance(entry)
1 entry = ["D 300","D 300","W 200","D 100"]
2 def bankbalance(entry):
----> 3 deposits = [float(entry[ent][0][2:]) for ent in entry if ("D" in entry[ent][0])]
4 withdrawals = [float(entry[ent][0][2:]) for ent in entry if ("W" in entry[ent][0])]
5
<ipython-input-40-003e60035a3a> in <listcomp>(.0)
1 entry = ["D 300","D 300","W 200","D 100"]
2 def bankbalance(entry):
----> 3 deposits = [float(entry[ent][0][2:]) for ent in entry if ("D" in entry[ent][0])]
4 withdrawals = [float(entry[ent][0][2:]) for ent in entry if ("W" in entry[ent][0])]
5
TypeError: list indices must be integers or slices, not str
ent
不是索引,是entry的一个元素,所以不需要entry[ent][0][2:]
,需要的是ent[0][2:]
.
固定代码:
entry = [["D 300"],["D 300"],["W 200"],["D 100"]]
def bankbalance(entry):
deposits = [float(ent[0][2:]) for ent in entry if ("D" in ent[0])]
withdrawals = [float(ent[0][2:]) for ent in entry if ("W" in ent[0])]
global balance
balance = sum(deposits) - sum(withdrawals)
bankbalance(entry)
print(f'Current balance is {balance}')
输出:500.0