Склад ключей Квота стоит в машинном зале уже второй день, и всё Подземье кладёт туда, что открыто, что закрыто и сколько раз. Разбор команд у Квота такой:
class Store:
def __init__(self):
self.data = {}
def execute(self, line):
parts = line.split()
if len(parts) == 0:
return "ERR empty command"
if parts[0] == "set" and len(parts) == 3:
self.data[parts[1]] = parts[2]
return "OK"
if parts[0] == "get" and len(parts) == 2:
value = self.data.get(parts[1])
if value is None:
return "(nil)"
return value
if parts[0] == "del" and len(parts) >= 2:
removed = 0
for key in parts[1:]:
if key in self.data:
del self.data[key]
removed += 1
return f"(integer) {removed}"
return f"ERR unknown command '{parts[0]}'"
store = Store()
print(store.execute("set шлюз открыт"))
print(store.execute("get шлюз"))
print(store.execute("get"))
OK
открыт
ERR unknown command 'get'
В прошлом уроке Квот принёс склад и с ним два вопроса: водопад из if, знакомый по уроку 39, и get, который не отличает «ключа нет» от ключа с None. Сегодня ты ответишь на оба. Первый закрывает оператор match, который сравнивает значение с образцом его формы. Второй закрывает метка «значения нет», которую нельзя спутать ни с одним настоящим значением. А по дороге встретишь оператор, который присваивает внутри выражения.
урок из курса
Урок из курса «Python backend: Тарбадель». Курс покупается один раз и остаётся навсегда: 500 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.