Баночка для печенья
Предположим, вы хотите реализовать баночку для хранения печенья. В файле jar.py реализуйте класс Jar со следующими методами:
- __init__ должен инициализировать баночку для печенья заданной ёмкостью, которая представляет собой максимальное количество печений, которые могут поместиться в банку. Однако если ёмкость не является неотрицательным целым числом, __init__ вместо этого должен вызвать ValueError.
- __str__ должен возвращать строку с n 🍪, где n — количество печений в банке. Например, если в банке 3 печенья, __str__ должна вернуть «🍪🍪🍪».
- deposit должен добавить n печений в банку. Однако, если добавление такого количества печений превысит емкость банки, вместо этого deposit должен вызвать ошибку ValueError.
- withdraw должна удалить n печений из банки. Ням ням ням. Однако, если в банке не так много печений, при withdraw вместо этого должен вызвать ошибка ValueError.
- capacity должен вернуть ёмкость банки с печеньем.
- size должен возвращать количество печений, находящихся на самом деле в банке, первоначально 0.
Структурируйте свой класс согласно приведённому ниже. Вы не можете изменять параметры этих методов, но можете добавлять свои собственные методы.
class Jar:
def __init__(self, capacity=12):
...
def __str__(self):
...
def deposit(self, n):
...
def withdraw(self, n):
...
@property
def capacity(self):
...
@property
def size(self):
...
Либо до, либо после реализации jar.py дополнительно реализуйте в файле с именем test_jar.py четыре или более функции, которые совместно тщательно проверяют вашу реализацию Jar, каждое из имен которых должно начинаться с test_, чтобы вы могли выполнять свои тесты с помощью :
pytest test_jar.py
Обратите внимание, что тестировать методы экземпляра не так просто, как тестировать только функции, поскольку методы экземпляра иногда манипулируют одним и тем же «состоянием» (то есть переменными экземпляра). Чтобы протестировать один метод (например, withdraw), вам может потребоваться сначала вызвать другой метод (например, deposit). Но метод, который вы вызываете первым, сам по себе может быть неправильным!
Подсказка
from jar import Jar
import pytest
def test_init():
...
def test_deposit():
jar = Jar()
jar.deposit(3)
assert(jar.size == 3)
with pytest.raises(ValueError):
jar.deposit(10)
def test_str():
jar = Jar()
assert str(jar) == ""
jar.deposit(3)
assert str(jar) == "\N{Cookie}"*3
def test_withdaw():
...
Шаги выполнения
Зайдите на cs50.dev. Используя команду cd, сделайте рабочим каталогом codespace. Создайте каталог jar, выполнив
mkdir jar
Перейдите в каталог.
cd jar
Выполните
code jar.py
чтобы открыть редактор, и напишите вашу программу.
Выполните
code test_jar.py
Чтобы создать файл test_jar.py, гед вы запишите тесты для вашей программы.
Как проверить
Здесь как вы можете проверить ваш код:-
Откройте ваш test_jar.py файл импортируйте Jar класс с
Создайте функцию test_init, в ней создайте экземпляр Jar c jar = Jar(). assert что jar имеет нужную capacity, затем запустите pytest test_jar.py.from jar import Jar - Добавьте в файл test_jar.py еще одну функцию под названием test_str. В test_str создайте новый экземпляр вашего класса Jar и поместите несколько печений. assert, что str(jar) распечатывает столько печений, сколько было сохранено, а затем запустите тесты с помощью pytest test_jar.py.
- Добавьте в файл test_jar.py еще одну функцию под названием test_deposit. В test_deposit создайте новый экземпляр вашего класса Jar и поместите печений. assert, что атрибут size jar равен количеству печений. Также assert, что если вы количество помещаете печений, превышающую емкость банки, deposit должен вызвать ошибку ValueError. Запустите тесты с помощью pytest test_jar.py.
- Добавьте в файл test_jar.py еще одну функцию под названием test_withdraw. В test_withdraw создайте новый экземпляр вашего класса Jar и сначала поместите несколько печений. assert, что при выходе из банки в атрибуте size остается соответствующее количество печений. Также assert, что если вы извлекаете больше, чем size банки, вывод должен вызвать ValueError. Запустите свои тесты с помощью pytest test_jar.py.
npx cs204 2023/jar local
Для отправки на проверку выполните команду:
npx cs204 2023/jar
Заполните форму
форма отправки на проверкуСвои оценки вы можете посмотреть на http://90.188.117.161:8080.