Как удалить пару ключ-значение из словаря после доступа к нему? ⇐ Python
Как удалить пару ключ-значение из словаря после доступа к нему?
Я создаю текстовую игру для класса, в которой игрок перемещается по комнатам и собирает предметы, пытаясь избежать комнаты, в которой находится злодей. Я заставил игру работать правильно, однако мне нужно сделать так, чтобы, когда игрок берет предмет из комнаты, он не мог брать его снова и снова. Я знаю, что мне нужно удалить пару ключ-значение из словаря после того, как я получу к нему доступ, но я не могу понять, как получить доступ к ключу-значению, а затем удалить его. Я попытался использовать функцию del, чтобы удалить его после итерации, но это вызвало ошибку.
def show_instructions(): print('Добро пожаловать в Rocket Escape!\n') print('Соберите 6 частей космического корабля, чтобы покинуть планету, прежде чем вас поймает злая Корпоративная горнодобывающая компания!') print('Команды движения: север, юг, восток, запад') print('Чтобы забрать предмет и добавить его в инвентарь, введите «Приобрести»') print('Чтобы выйти из игры, введите: Exit') комнаты = { 'Дом': {'Север': 'Поля', 'Восток': 'Библиотека'}, 'Библиотека': {'Запад': 'Дом', 'предмет': 'Карта'}, 'Поля': {'Север': 'Топливный склад', 'Восток': 'Лаборатория', 'Юг': 'Дом', 'Запад': 'Стартовая площадка', 'предмет': 'Пайки'}, «Стартовая площадка»: { «Восток»: «Поля», «предмет»: «Ключи»}, «Топливный склад»: { «Юг»: «Поля», «Восток»: «Передние ворота», «предмет»: «Топливо»}, 'Лаборатория': {'Север': 'Сарай', 'Запад': 'Поля', 'предмет': 'Скафандр'}, 'Сарай': {'Юг': 'Лаборатория', 'предмет': 'Боеприпасы'}, «Передние ворота»: { «Запад»: «Топливный склад», «item»: «Корпоративная горнодобывающая компания!»}} защита player_stat(): Распечатать('') print('Вы находитесь в {}'.format(current_room)) print('Текущий инвентарь: {}'.format(current_inv)) если «предмет» в комнатах[current_room]: print('\nВы видите {}!'.format(rooms[current_room]['item'])) Распечатать('') текущий_инв = [] current_room = 'Дом' player_move = '' show_instructions() пока правда: player_stat() player_move = input('Введите свой ход:\n').title() if player_move == 'Выход': print('Выход. Спасибо за игру!') перерыв elif player_move в комнатах[current_room]: текущая_комната = комнаты[текущая_комната][player_move] elif player_move == 'Получить': current_inv.append(комнаты[current_room]['предмет']) print('Вы приобрели {}!'.format(rooms[current_room]['item'])) if current_room == 'Главные ворота': print('О нет! Вас схватила Корпоративная горнодобывающая компания!') перерыв еще: print('\nНеверный ход') #Я пытался использовать функцию del, но она удалила всю пару значений перед итерацией
Я создаю текстовую игру для класса, в которой игрок перемещается по комнатам и собирает предметы, пытаясь избежать комнаты, в которой находится злодей. Я заставил игру работать правильно, однако мне нужно сделать так, чтобы, когда игрок берет предмет из комнаты, он не мог брать его снова и снова. Я знаю, что мне нужно удалить пару ключ-значение из словаря после того, как я получу к нему доступ, но я не могу понять, как получить доступ к ключу-значению, а затем удалить его. Я попытался использовать функцию del, чтобы удалить его после итерации, но это вызвало ошибку.
def show_instructions(): print('Добро пожаловать в Rocket Escape!\n') print('Соберите 6 частей космического корабля, чтобы покинуть планету, прежде чем вас поймает злая Корпоративная горнодобывающая компания!') print('Команды движения: север, юг, восток, запад') print('Чтобы забрать предмет и добавить его в инвентарь, введите «Приобрести»') print('Чтобы выйти из игры, введите: Exit') комнаты = { 'Дом': {'Север': 'Поля', 'Восток': 'Библиотека'}, 'Библиотека': {'Запад': 'Дом', 'предмет': 'Карта'}, 'Поля': {'Север': 'Топливный склад', 'Восток': 'Лаборатория', 'Юг': 'Дом', 'Запад': 'Стартовая площадка', 'предмет': 'Пайки'}, «Стартовая площадка»: { «Восток»: «Поля», «предмет»: «Ключи»}, «Топливный склад»: { «Юг»: «Поля», «Восток»: «Передние ворота», «предмет»: «Топливо»}, 'Лаборатория': {'Север': 'Сарай', 'Запад': 'Поля', 'предмет': 'Скафандр'}, 'Сарай': {'Юг': 'Лаборатория', 'предмет': 'Боеприпасы'}, «Передние ворота»: { «Запад»: «Топливный склад», «item»: «Корпоративная горнодобывающая компания!»}} защита player_stat(): Распечатать('') print('Вы находитесь в {}'.format(current_room)) print('Текущий инвентарь: {}'.format(current_inv)) если «предмет» в комнатах[current_room]: print('\nВы видите {}!'.format(rooms[current_room]['item'])) Распечатать('') текущий_инв = [] current_room = 'Дом' player_move = '' show_instructions() пока правда: player_stat() player_move = input('Введите свой ход:\n').title() if player_move == 'Выход': print('Выход. Спасибо за игру!') перерыв elif player_move в комнатах[current_room]: текущая_комната = комнаты[текущая_комната][player_move] elif player_move == 'Получить': current_inv.append(комнаты[current_room]['предмет']) print('Вы приобрели {}!'.format(rooms[current_room]['item'])) if current_room == 'Главные ворота': print('О нет! Вас схватила Корпоративная горнодобывающая компания!') перерыв еще: print('\nНеверный ход') #Я пытался использовать функцию del, но она удалила всю пару значений перед итерацией
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение