#python #dictionary #key
Вопрос:
Это мой первый пост, так что, пожалуйста, потерпите меня. В настоящее время я нахожусь на вводном занятии по информатике, и наш заключительный проект состоит в том, чтобы создать текстовую игру, в которой вы будете перемещаться из комнаты в комнату и собирать предметы. Я хочу предоставить игроку их возможные ходы, чтобы они не тратили время впустую, натыкаясь на стены. Код, который у меня есть, работает до тех пор, пока игрок выбирает, чтобы забрать предмет в комнате. Однако, если они покидают объект, то «элемент» печатается в возможных перемещениях, так как он не был добавлен. Это мои мысли, но я изо всех сил пытаюсь полностью соединить точки в своей голове:
if 'item' in rooms[current_room]:
print(rooms[current_room].keys()) <---- would I add some kind of range here [:]? I'm not sure how I would do that.
Может быть, сработает цикл «для»? Что-то вроде
for keys in range.....
Я не хочу удалять ключ, я просто не хочу, чтобы он печатался. Любые советы будут оценены по достоинству! Вот код, который вызывает у меня проблемы:
rooms = {
'Living Room': {'North': 'Master Bedroom', 'South': 'Kitchen', 'East': 'Laundry Room', 'West': 'Front Porch'},
'Laundry Room': {'North': 'Back Door', 'West': 'Living Room', 'item': 'Fancy Duds'},
'Back Door': {'South': 'Laundry Room', 'item': 'Nice Shoes'},
'Kitchen': {'North': 'Living Room', 'East': 'Your Room', 'item': 'Half-Eaten Box of Chocolates'},
'Your Room': {'West': 'Kitchen', 'item': 'Cheap Cologne'},
'Front Porch': {'East': 'Living Room', 'item': 'Freshly Picked Flowers'},
'Master Bedroom': {'South': 'Living Room', 'East': 'Master Bathroom', 'item': 'Flashlight'},
'Master Bathroom': {'West': 'Master Bedroom', 'item': 'YOUR MOTHER'} # villian
}
current_room = 'Laundry Room'
possible_moves = rooms[current_room].keys()
print('Possible Moves:', *possible_moves)
Комментарии:
1. что ты пытался сделать? Ты сказал
Maybe a 'for' loop
, но ты не пробовал. Сначала вы могли бы попробовать использоватьfor
-loop2. Я начал работать над циклом for, когда опубликовал это. Честно говоря, я не был уверен, как быстро получу ответ на свой вопрос, поэтому написал сообщение до того, как по-настоящему поработал над своим циклом. Теперь я знаю, что здесь есть несколько быстро реагирующих. Спасибо!
Ответ №1:
Вы можете отфильтровать беспокоящий ключ («элемент») таким образом:
possible_moves = [move for move in rooms[current_room].keys() if move != "item"]
print('Possible Moves:', possible_moves)
Это эквивалентно вашей идее использовать для этого цикл for, как это:
possible_moves = []
for move in rooms[current_room].keys():
if move != 'item':
possible_moves.append(move)
print(possible_moves)
Комментарии:
1. Спасибо! Это то, куда мой мозг пытался попасть, но моя база знаний Python все еще довольно мала, поэтому я не был уверен, как туда добраться. Спасибо вам за то, что написали это в обоих направлениях, это помогает мне понять процесс.