我正在制作我的tic tac toe游戏 我想将用户的输入限制为列表元素。
我的代码如下
from random import randint
def player_input():
turn_r = randint(0,1)
if(turn_r == 0):
def player1():
p1marker=0
while not int(p1marker) in range(0,9):
p1marker = raw_input("Where Should I Place Your X : ")
board[p1marker-1] = 'X'
if(turn_r == 1):
def player2():
p2marker=0
while not int(p2marker) in range(0,9):
p2marker = raw_input("Where Should I Place Your X : ")
board[p2marker-1] = 'X'
而不是range(0,9)
我希望while循环检查列表的元素,并且还避免在列表中由用户添加X或0
答案 0 :(得分:2)
只需将range(0,9)
替换为您的列表即可。它应该完全一样!
但是,您的代码还存在其他问题:
p1marker=0
while not int(p1marker) in range(0,9):
p1marker = raw_input("Where Should I Place Your X : ")
此循环永远不会执行,因为您已将p1marker
声明为0
。
另外,如果您想使用board[p1marker-1] = 'X'
,请确保p1marker
是一个数字。实际上,尝试从字符串中减去一个整数会出错。
答案 1 :(得分:0)
列出您的选择。 假设:
x = [0,1,2,3,4,5,6,7,8]
然后用x
替换范围(0,9)while not int(p1marker) in x:
答案 2 :(得分:-1)
您的代码在当前状态下实际上是无用的。观察:
from random import randint
def player_input():
turn_r = randint(0,1)
if(turn_r == 0):
def player1():
...
if(turn_r == 1):
def player2():
...
根据turn_r
的值,您可以定义此函数,也可以定义该函数。
示例:
>>> i = 0
>>> if i:
... def f1(): pass
... elif i == 0:
... def f2(): pass
...
>>> f1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'f1' is not defined
>>> f2
<function f2 at 0x104a511b8>
另一件事是,如果turn_r == 0
为真,则第二个条件永远不会发生。您最好将第二个if
转换为elif
。它可以提供更好的代码。
最后,您需要做的就是将range(0, 9)
替换为您的一些列表,如果这是您想要的。
但是,除非你调用其中任何一个函数,否则它将没有用处。