【问题标题】:I can't find why this function doesn't work [Python 3]我找不到为什么这个函数不起作用 [Python 3]
【发布时间】:2018-02-12 02:49:59
【问题描述】:

我最近刚开始编码,我正在尝试用 Python 3 制作一个井字游戏程序。这是我尝试过的最大的项目,我似乎做得很好,但我遇到了一个我无法解决的问题想办法。

我的棋盘编号为 1 到 9。当我使用参数 move1 和 user1 运行此函数时,它应该将棋盘上的相应位置更改为用户的字符 X 或 O。

print("Player 1 goes first. Select your square")
move1 = input("> ")

def new_move(number_of_moves, user):
    if number_of_moves == '1':
        square1 = user
    if number_of_moves == '2':
        square2 = user
    if number_of_moves == '3':
        square3 = user
    if number_of_moves == '4':
        square4 = user
    if number_of_moves == '5':
        square5 = user
    if number_of_moves == '6':
        square6 = user
    if number_of_moves == '7':
        square7 = user
    if number_of_moves == '8':
        square8 = user
    if number_of_moves == '9':
        square9 = user

new_move(move1, user1)
tictactoe()

但是,当我运行该函数时,它不会将相应正方形的值更改为用户的字符。它根本不会改变任何东西。我一直在把头撞在墙上,试图弄清楚为什么无济于事。就像我说的那样,我对此很陌生,因此感谢您提供任何帮助。谢谢!

【问题讨论】:

  • tictactoe 在哪里定义?这似乎是这里的一些重要背景
  • 您应该在代码中采用列表的概念。

标签: python function tic-tac-toe


【解决方案1】:

因为new_move 中的square# 被视为局部变量。

局部变量只存在于new_move 函数中。它不在函数之外被引用。

您可以通过将它们设为全局来更改它。

def new_move(number_of_moves, user):
    global square1, square2, square3, square4, square5, square6, square7, square8, square9
    if number_of_moves == '1':
        square1 = user
    if number_of_moves == '2':
        square2 = user
    if number_of_moves == '3':
        square3 = user
    if number_of_moves == '4':
        square4 = user
    if number_of_moves == '5':
        square5 = user
    if number_of_moves == '6':
        square6 = user
    if number_of_moves == '7':
        square7 = user
    if number_of_moves == '8':
        square8 = user
    if number_of_moves == '9':
        square9 = user

其实我不推荐这样做,但是会起作用的。

有关详细信息,请参阅 Using global variables in a function other than the one that created them

【讨论】:

    猜你喜欢
    • 2013-04-04
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多