这个问题在面试中被问到, 定义应满足3个案例的函数
case 1:set initial balance
case 2:deduct the amount and return balance
case 3:should add amount to balance and return current balance
条件: 1.不要使用全局变量 2.不要使用自我(没有上课的意思) 3.不要使用文件或类似的东西
所以我定义了像
这样的函数def fun1(amt,reset=None):
if reset:
fun1.balance = reset
fun1.balance = fun1.balance-amt
return fun1.balance
print fun1(0,500)#will set balance 500
print fun1(200) #will deduct amount 200 and return balance 300
print fun1(0,400)#should add 400 to balance and return 700
所以我想在每个函数调用时保持平衡值 在上面的情况 FUN1(0,500) fun1(200)效果很好 但如何将代码修改为第三种情况fun1(0,400)返回true结果
陷入第三种情况,这将更新余额......
答案 0 :(得分:2)
你快到了。对于金额,使用负数来扣除和要添加的正数。您也可以使用零来查询余额:
def transact(amount, reset=None):
if reset:
transact.balance = reset
transact.balance = transact.balance + amount
return transact.balance
print transact(0, 500) # will set balance 500
print transact(-200) # will deduct amount 200 and return balance 300
print transact(400) # add 400 to make 700
我不确定这是面试官的想法,但它确实有效。
答案 1 :(得分:0)
我使用了异常处理
def fun1(amt,reset=None):
if reset:
try:
fun1.balance += reset
except:
fun1.balance = reset
fun1.balance = fun1.balance-amt
return fun1.balance
现在它工作正常,但不知道有多可行......
print fun1(0,500)#will set balance 500
print fun1(200) #will deduct amount 200 and return balance 300
print fun1(0,400)#should add 400 to balance and return 700
〜