Python变量

Python变量,python,terminal,Python,Terminal,我是python的初学者,我正在制作的程序遇到了问题。这是代码 import random s1 = "*" s2 = "*" s3 = "*" s4 = "*" s5 = "*" s6 = "*" s7 = "*" s8 = "*" s9 = "*" Spaces = [s1, s2, s3, s4, s5, s6, s7, s8, s9] def Board(): print "" print "",s1,"|",s2,"|",s3 print "","--

我是python的初学者,我正在制作的程序遇到了问题。这是代码

import random

s1 = "*"
s2 = "*"
s3 = "*"
s4 = "*"
s5 = "*"
s6 = "*"
s7 = "*"
s8 = "*"
s9 = "*"


Spaces = [s1, s2, s3, s4, s5, s6, s7, s8, s9]


def Board():
    print ""
    print "",s1,"|",s2,"|",s3
    print "","---------"
    print "",s4,"|",s5,"|",s6
    print "","---------"
    print "",s7,"|",s8,"|",s9, "\n"


def PlayerMove():
    move = raw_input('Choose a space 1-9 \n')

    if move == "1":
        s1 = "X"
    elif move == "2":
        s2 = "X"
    elif move == "3":
        s3 = "X"
    elif move == "4":
        s4 = "X"
    elif move == "5":
        s5 = "X"
    elif move == "6":
        s6 = "X"
    elif move == "7":
        s7 = "X"
    elif move == "8":
        s8 = "X"
    elif move == "9":
        s9 = "X"
    Board()


def Computer1():
    random.choice(Spaces)
    if random.choice(Spaces) == "s1":
        s1 = "X"
    elif random.choice(Spaces) == 's3':
        s3 = "X"
    elif random.choice(Spaces) == 's5':
        s5 = "X"
    elif random.choice(Spaces) == 's7':
        s7 = "X"
    elif random.choice(Spaces) == 's9':
        s9 = "X"
    Board()


PlayerMove()
Computer1()
然而,当我在terminal中运行此代码时,我得到以下结果:

Choose a space 1-9 
1

 * | * | *
 ---------
 * | * | *
 ---------
 * | * | * 


 * | * | *
 ---------
 * | * | *
 ---------
 * | * | * 
基本上,我想让函数PlayerMove()和Computer1()执行以下操作:

Choose a space 1-9 
1

 * | * | *
 ---------
 * | * | *
 ---------
 * | * | * 


 * | * | *
 ---------
 * | * | *
 ---------
 * | * | * 
当代码运行PlayerMove()时,我希望输入将变量s1(或s2,或s3…取决于输入)更改为新值(该值为X)。
当代码运行Computer1()时,我希望使用random.choice从列表空间中进行随机选择,如果选择的空间是以下空间之一,请将s1(或s3、s5、s7、s9)的值更改为X


如果我调用Board()函数,它将用这些更改打印电路板,我将如何使其发生这种更改

如果要更改函数
PlayerMove()
ComputerMove()
中的
sN
变量,必须在函数开头声明它们

def PlayerMove():
    global s1,s2,s3,s4,s5,s6,s7,s8,s9
    move = raw_input('Choose a space 1-9 \n')
    ...

但是,正如前面提到的,您应该考虑使用数组或列表来保存每个单元的板状态而不是单个变量。

board = [["*", "*", "*"],
         ["*", "*", "*"],
         ["*", "*", "*"]]
现在您可以访问电路板的状态

 board[1][1] # => "*"
 board[1][1] = 'X'
 board[1][1] # => "X"
可以像这样使用

>>> bd = Board()
>>> bd.open_moves()
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> bd.do_move(5)
>>> print(bd)

 * | * | *
 ---------
 * | X | *
 ---------
 * | * | *

您应该强烈考虑放弃<代码> Sn<代码>变量,以支持九个元素<代码>列表< /代码>。你会发现代码突然变得简单多了。。。而且显式参数和
返回值
比依赖于范围(例如
空格
)要好。这看起来像是家庭作业,不是家庭作业,但是一点帮助就好了。多亏了这么多,我如何制作数组而不是电路板呢。