512189654 发表于 2022-2-27 17:06:38

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

傻眼貓咪 发表于 2022-2-27 17:09:48

这好像不是 Python 问题,好像只是个逻辑思考问题(IQ 测试题?)

512189654 发表于 2022-2-27 17:22:59

傻眼貓咪 发表于 2022-2-27 17:09
这好像不是 Python 问题,好像只是个逻辑思考问题(IQ 测试题?)

要用python写出逻辑

傻眼貓咪 发表于 2022-2-27 18:04:34

这样?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) # 重复做的次数

512189654 发表于 2022-2-27 19:49:38

傻眼貓咪 发表于 2022-2-27 18:04
这样?

应该不是这样的,不过谢谢啦!

qq1151985918 发表于 2022-2-28 08:12:31

这跟汉诺塔不是一样的么,递归就解决了。

isdkz 发表于 2022-2-28 09:32:09

我研究研究,写好代码就回复你

z5560636 发表于 2022-2-28 14:49:51

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)

Stubborn 发表于 2022-2-28 18:33:14

需要求解过程,还是只需要确定结果,例如返回True or False
页: [1]
查看完整版本: python倒水问题