python## 以下程序用于解决买水问题。规则:1元钱可以买一瓶水,2个空瓶可以换一瓶水,3个瓶盖也可以换一瓶水,请找出错误并修改验证。
water = eval(input(“请输入钱数:”))
def f(nW,nB,nL):
global Water,bottle,lid
bottle = nB + nW
lid = nL + nW
nW = bottle // 2 + lid // 3
water += nW
bottle = bottle % 2
lid = lid % 3
if (nB < 2 or nL < 3 or nW < 1) :
break
else:
f(nW,nB,nL)
f(Water,0,0)
print(Water)
以下是修改后的程序:
water = eval(input(“请输入钱数:”))
def f(nW,nB,nL): #定义买水的函数
global Water,bottle,lid #定义全局变量水、瓶子和瓶盖
bottle = nB + nW #计算瓶子的数量
lid = nL + nW #计算瓶盖的数量
nW = bottle // 2 + lid // 3 #计算新水的数量
Water += nW #计算水的数量
nB = bottle % 2 #计算的是新瓶的数量,故应该将boottle改为nB
nL = lid % 3 #计算的是新盖的数量,故应该将lid改为nL
if (nB < 2 and nL < 3 and nW < 1) : #函数结束条件是nB、nL和nW同时满足条件,故应该将or改为and
break #返回应该用return, 故应该将break改为return
else:
f(nW,nB,nL)
f(Water,0,0)
print(Water)