变量不在while循环中更新,python

时间:2018-09-30 03:04:50

标签: python loops while-loop scope break

我正在尝试编写战舰游戏。我遵循了代码学院的课程,然后继续在那里写的游戏,但是我将事情分成了自己的模块并创建了类。一般来说,我对python和编程还是很陌生。我以前参加过CS课程,现在正在EDX上学习CS50x

在我的程序中,我声明了一个名为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

这个break语句确实有问题。我正在使用Pycharm,并且在调试器中变量play_again从未设置为0。在“主菜单”中它始终为1,我一生都无法弄清为什么它没有改变。我觉得这很简单。我觉得这与作用域在python中的工作方式有关,但是变量是在与使用的作用相同的函数中创建的,因此我不确定为什么两者之间作用域会有所不同。进入循环时范围会改变吗?

谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您有play_again == 0,也许您是想输入play_again = 0