Я пытаюсь понять конкретный фрагмент кода в задаче 35 «Изучить Python - трудный путь», прежде чем двигаться дальше.
В соответствии с запросом книги, я писал выше комментарий примерно к каждой строке (или блоку) кода, чтобы разбить то, что происходит, чтобы я мог проверить свое понимание того, что происходит.
У меня возникли небольшие проблемы с использованием логики ветвления в цикле while, о которой я опубликую (выкладываю модифицированную версию, которая должна помочь показать, что я делал субедитесь, что я все понимаю).
def bear_room():
print("There is a bear here.")
print("The bear has a bunch of honey.")
print("The fat bear is in front of another door.")
print("How are you going to move the bear?")
bear_moved = False # default status of bear
while True:
bear_loop_counter = 0
choice = input("bear room input> ")
if choice == "take honey":
dead("The bear looks at you and slaps your face off.")
elif choice == "taunt bear" and not bear_moved:
print("The bear has moved from the door.")
print("You can go through it now.")
bear_loop_counter += 1
print("The bear room loop has iterated",bear_loop_counter, "time.")
bear_moved = True
elif choice == "taunt bear" and bear_moved:
dead("The bear gets pissed off and chews your leg off.")
elif choice == "open door" and bear_moved:
gold_room()
else:
print("I got no idea what that means")
Как видите, я реализовал несколько вещей для отладки, в том числе изменив подсказку ввода на что-то, что показывает мне, с каким блоком кода я имею делои счетчик, который показывает, сколько проходов через цикл я сделал.
Я пытаюсь понять фрагмент кода, который говорит:
elif choice == "taunt bear" and not bear_moved
Я понимаю, что этот цикл while в основном ждет, когда вы войдете в одну из ветвей, которая выйдет изцикл (dead () или один из битов other_room ()).Я также знаю, что по умолчанию «состояние» медведя - «not_moved» и что ветвь «taunt_bear» изменит статус медведя.Я не получаю часть «и не» этого сегмента кода.
Я понимаю, что:
bear_moved = False
Мне кажется, это будет означать, что «а не bear_moved»«будет интерпретироваться как« а не bear_moved (False) », что, в свою очередь, будет читать« и bear_moved (True) », если вы упростите эту логику.Итак, написано простым английским языком: «Если ваш выбор насмехаться над медведем, а медведь передвигается, выполните некоторые операторы печати ... увеличьте счетчик и т. Д.»Очевидно, это не то, как работает код.Я могу видеть из своего счетчика и просто запуска программы, что оператор «а не» не работает так, как я только что объяснил.
Я полагаю, что я работаю в предположении, что bear_moved установлен МЭ в значение False, когдаЯ написал код.Я мог бы понять, что делает то, что делает, если Python принимает bear_moved как True или что-то в этом роде.Я думаю:
bear_moved = False
Поэтому:
not bear_moved == True
Вот вопрос, по которому я ищу разъяснения.
Заранее спасибо.