python倒水问题
问题:有两个杯子,一个5L,一个6L,想办法倒出3L水解决:
1、先把6L杯子装满,然后倒入5L的水杯,则6l中还剩1L
2、把5升水倒掉,然后把1l水倒入
3、重复以上步骤,把6L水装满,倒入5L水杯,此时5L水杯已有1L水,所以只能倒4L水过来 ,则6L水杯里还剩2L
4、再把5L水杯水倒掉,把6L水杯中2L水倒入5L水杯
5、把6l水装满,倒入5l水杯,此时5l水杯已有2L水,所以只能倒3L水过来 ,则6L水杯里还剩3L
这好像不是 Python 问题,好像只是个逻辑思考问题(IQ 测试题?) 傻眼貓咪 发表于 2022-2-27 17:09
这好像不是 Python 问题,好像只是个逻辑思考问题(IQ 测试题?)
要用python写出逻辑 这样?bottle_A = 6
bottle_B = 5
water = 3
count = 0
while bottle_B != water:
bottle_B = (bottle_B + bottle_A)%5
count += 1
print(count) # 重复做的次数 傻眼貓咪 发表于 2022-2-27 18:04
这样?
应该不是这样的,不过谢谢啦! 这跟汉诺塔不是一样的么,递归就解决了。 我研究研究,写好代码就回复你 class 倒水():
def __init__(self):
self.a = 0
self.b = 6
self.a_num = 5
self.b_num = 6
def 满上B(self):
self.b = 6
def 递归求值(self, 循环条件):
print("容器A 容量:", self.a, "容器B 容量:", self.b)
print("容器B 倒入 容器A")
self.b = self.b - self.a_num + self.a
self.a = self.b_num - self.b + self.a
print("容器A 容量:", self.a, "容器B 容量:", self.b)
if 循环条件 != self.b:
print("清空 容器A")
self.清空A()
print("容器A 容量:", self.a, "容器B 容量:", self.b)
self.a = self.b
self.b = 0
print("容器B 倒入 容器A")
print("容器A 容量:", self.a, "容器B 容量:", self.b)
self.满上B()
print("容器B 满上")
self.递归求值(循环条件)
else:
print("完成容器B:", self.b)
return 0
def 清空A(self):
self.a = 0
def 清空B(self):
self.b = 0
c = 倒水()
c.递归求值(3)
需要求解过程,还是只需要确定结果,例如返回True or False
页:
[1]