python CS50P www.example.com课堂练习中出现了什么错误jar.py?

xiozqbni  于 2022-12-21  发布在  Python
关注(0)|答案(2)|浏览(115)

任务是创建一个类的"cookie罐",可以容纳0 - 12个cookie。不幸的是,我一直得到一个错误的Check50,但我不能找出原因。

:( Jar's constructor raises ValueError when called with negative capacity
    expected exit code 0, not 1. Any hint would be greatly appreciated.
class Jar:
    def __init__(self, capacity=12):
        self.capacity = capacity
        self.size = 0

    def __str__(self):
        return '🍪' * self.size

    def deposit(self, n):
        self.size += n
        if self.size > 12:
            raise ValueError('Too many')

    def withdraw(self, n):
        self.size -= n
        if self.size < 0:
            raise ValueError('Invalid Capacity')

    @property
    def capacity(self):
        return (self._capacity)

    @property
    def size(self):
        return (self._size)

    @capacity.setter
    def capacity(self,capacity):
        self._capacity = capacity

    @size.setter
    def size(self,size):
        self._size = size

我已经进行了广泛的搜索,我感到困惑,因为一个大于12的值被设置为就像小于0一样,但我得到了不同的check50结果。

guykilcj

guykilcj1#

def __init__(self, capacity=12):
    self.capacity = capacity
    self.size = 0

def deposit(self, n):
    self.size += n
    if self.size > 12:
        raise ValueError('Too many')

我想你误解了这两个功能。
我猜想如果初始容量小于零(或者,实际上小于1,因为一个根本装不下任何cookie的jar有什么用?)或者大于12,__init__应该会引发一个错误,但是您的函数根本没有验证这个值。
并且在deposit中,您不应该检查cookie的数量是否大于12;你应该检查它是否大于self.capacity,因为这个cookie罐的容量可能小于12。

5f0d552i

5f0d552i2#

我认为您应该在lines这几行中使用self._capacity或self._size

相关问题