重新分配列表中不起作用的内容-Python

重新分配列表中不起作用的内容-Python,python,python-2.7,Python,Python 2.7,我试图在用户完成某项操作后重新分配列表中的某项内容,但它似乎不起作用。以下是罪犯代码: table = [" "," ", " ", " ", " ", " ",] userplay = input(": ") if userplay == "1": table[1] = "X" 当这种情况发生,我试图打印它,它只是保持不变。我做错了什么?如果使用的是Python 2,则需要将变量强制转换为字符串或使用原始输入() 或者更好,正如@Max所提到的,针对int进行测试(如果您使用的是py

我试图在用户完成某项操作后重新分配列表中的某项内容,但它似乎不起作用。以下是罪犯代码:

table = [" "," ", " ", " ", " ", " ",]
userplay = input(": ")
if userplay == "1":
    table[1] = "X"

当这种情况发生,我试图打印它,它只是保持不变。我做错了什么?

如果使用的是Python 2,则需要将变量强制转换为字符串或使用
原始输入()

或者更好,正如@Max所提到的,针对
int
进行测试(如果您使用的是python2,并且您的输入是整数):


注意:Python3中,
input()
默认返回一个字符串。

要解决问题,如果您使用的是Python27,可以使用
raw\u input()

您可以找到相关文档

如果改用Python3,
input()
工作正常

我假设您使用的是Pyhton27,因此代码如下:

table = [" "," ", " ", " ", " ", " ",]
userplay = raw_input(": ")
if userplay == "1":
    table[1] = "X"
如果用户插入
1
,则表变量的值等于

[' ', 'X', ' ', ' ', ' ', ' ']

我想你在用Python2.7。使用
原始输入
。此外,如果
中的代码存在缩进问题。我猜您在实际代码中有正确的缩进,您似乎没有缩进
表[1]=“X”
。这只是一个格式错误还是程序本身的错误?正如@MoinuddinQuadri提到的,您需要使用raw_input()。您从输入中得到的是数字1,它不等于“1”,并且您的检查无效。您使用的是哪个版本的python?考虑添加<代码>打印(RePR(UpRePy))< /C> >以查看键入的内容。还可以考虑添加一个For子句来处理坏的输入。或者使<代码>“1”<代码> A<代码> 1 < /代码>。很好的解决方案@Max不同意第二种方法“更好”。在Python 2中使用
input
类似于使用
eval
,而不是recommended@Chris_Rands我没有说第二种方法是“更好”,我说如果OP的输入是整数,最好将输入与
int
进行比较,而不是
str
@Chris_Rands我不是在暗示它更好,我只是在添加另一种方法
table = [" "," ", " ", " ", " ", " ",]
userplay = raw_input(": ")
if userplay == "1":
    table[1] = "X"
[' ', 'X', ' ', ' ', ' ', ' ']