Переменная не обновляется в цикле while, python - PullRequest
0 голосов
/ 30 сентября 2018

Я пытаюсь написать игру на линкоре.Я прошел курс по codecademy и продолжил игру, которую написал там, но я разделил вещи на их собственные модули и создал классы.Я все еще очень плохо знаком с питоном и программированием в целом.Я уже проходил курс CS, и сейчас я работаю через CS50x для EDX

. В моей программе я объявляю переменную play_again и устанавливаю ее в 0. Затем я использую оператор while для запуска своей игры сwhile play_again != 2:

Это, по сути, мое «Главное меню» для игры.

play_again = 0

while play_again != 2:

    if play_again == 0:
        print("Would you like to play a game of Battleship?")
        print("Enter 1 to play")
        print("Enter 2 to exit")
        play_again = int(input("Make a selection: "))

    if play_again == 1:

В этом блоке я сталкиваюсь с проблемами, он вложен в блок if выше после некоторыхдругой код, который просто создает игровое поле и корабль для поиска.

        for turn in range(4):
            print("Turn: ", turn + 1)
            guess_row = int(input("Guess Row: ")) - 1 # the "-1"s here 
compensate for our count starting at 0
            guess_col = int(input("Guess Col: ")) - 1

            #checks to see if the users guess is correct
            if guess_row == ship_row and guess_col == ship_col:
                print("Congratulations! You sank my battleship!")
                play_again == 0
                break

У меня действительно есть проблемы с этим оператором разрыва.Я использую Pycharm, и в отладчике переменная play_again никогда не устанавливается на 0. Она остается 1 в «Главном меню», и я не могу понять, почему она не меняется.Я чувствую что-то супер простое.Я чувствую, что это как-то связано с тем, как работает область видимости в python, но переменная создается в той же функции, в которой она используется, поэтому я не уверен, почему область видимости будет отличаться между ними.Меняется ли область действия, когда вы входите в цикл?

Спасибо за любую помощь!

1 Ответ

0 голосов
/ 30 сентября 2018

У вас есть play_again == 0 возможно, вы хотели набрать play_again = 0.

...