gridSystem
- это словарь, а его ключ - это другой словарь, содержащий действие и значение. Моя проблема в функции action
- это оператор 2-го раза. Если action
не равно одному из действий в словаре a
(Смотрите, Boots .. эти имена теперь являются заполнителями), он должен просто распечатать «Попробовать еще раз». Но по какой-то причине он всегда оценивает значение true независимо от того, что делает, и дает мне ошибку, когда я печатаю то, что не является действием в словаре. Может кто-нибудь помочь? Благодарю.Оператор iF неверно оценивает true
a = {"Look":1, "Boots":32}
gridSystem = {"One":a}
def action():
while True:
room = raw_input("choose a room ")
if room in gridSystem.keys():
action = raw_input("What do you want to do? ")
actiontoString = ''.join([action])
if action == actiontoString:
continue_action = raw_input("You have selected to " + actiontoString)
print gridSystem[room][action]
break
elif not action == actiontoString:
print "Try again"
else:
raw_input("Not in the gridsystem. Press enter to try again")
action()
Хорошая техника отладки заключается в том, чтобы печатать переменные непосредственно перед оператором 'if', чтобы увидеть, сохраняют ли они значения, которые вы считаете. – tdelaney