Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python i';我已经试着让这个代码工作了好几个小时,我';我尝试了多种方法来修复它,但仍然没有';行不通_Python_Oop - Fatal编程技术网

Python i';我已经试着让这个代码工作了好几个小时,我';我尝试了多种方法来修复它,但仍然没有';行不通

Python i';我已经试着让这个代码工作了好几个小时,我';我尝试了多种方法来修复它,但仍然没有';行不通,python,oop,Python,Oop,我已经试着让它工作了好几个小时,我试着用多种方法修复它,但仍然不起作用 # this creates my class "bucket" class bucket: def __init__(self, water, capcity): self.water = water self.capcity = capcity # here I create my objects bucket1 = bucket(0, 3) bucket2

我已经试着让它工作了好几个小时,我试着用多种方法修复它,但仍然不起作用

# this creates my class "bucket"
class bucket:
    def __init__(self, water, capcity):
        self.water = water
        self.capcity = capcity


# here I create my objects
bucket1 = bucket(0, 3)
bucket2 = bucket(0, 5)


# this is the printing code to print how much water there is in every bucket
def pr_v():
    print("Bucket_ONE " + str(bucket1.water) + "L")
    print("Bucket_TWO " + str(bucket2.water) + "L")
    print(" ")


# this is where my problem is
# this scirpt is supposed to trasfer water from the pouring bucket (p_bucket) to the receiving bucket untill the receiving bucket reaches it's
# capacity or the pouring bucket runs out of water
def pour_water(p_bucket, g_bucket):
    while g_bucket.capcity >= g_bucket.water or p_bucket.water != -1:
        if g_bucket.capcity != g_bucket.water or p_bucket.water != -1:

            if g_bucket.capcity < g_bucket.water:
                bucket.water = g_bucket.capcity
                break
            p_bucket.water -= 1
            g_bucket.water += 1
            pr_v()

    if p_bucket.water == -1:
        p_bucket.water = 0


# this fills the bucket to it's capacity 
def fill_water(self):
    self.water = self.capcity


fill_water(bucket2)
pour_water(bucket2, bucket1)
pr_v()
它应该停在这里,因为铲斗1达到了它的容量

为什么会发生这种情况? 我是新的编码,所以我可能不知道很多东西


谢谢孩子你把事情复杂化了吗

def pour_water(p_bucket, g_bucket):
    while not p_bucket.is_full() and not g_bucket.is_empty():
        p_bucket += 1
        g_bucket -= 1
        pr_v()
我将把“is_full”和“is_empty”的实现留给您。
祝您好运

您必须更改下一行以添加等号:

 if g_bucket.capcity <= g_bucket.water:

如果g_bucket.capcity删除最后一个
pr_v()
它只是在您的方法中打印后再次打印结果,或者从您的方法中删除
pr_v()
,这样您只会看到结果

向下箭头是否意味着您不期望下面的输出,但您得到了它?您应该阅读以下内容:非常感谢!这种方法简单得多,但是你知道为什么它一开始就不起作用吗?
def pour_water(p_bucket, g_bucket):
    while not p_bucket.is_full() and not g_bucket.is_empty():
        p_bucket += 1
        g_bucket -= 1
        pr_v()
 if g_bucket.capcity <= g_bucket.water: