如何将用户输入限制为Lis的一个元素

2024-03-28 14:55:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在制作我的井字游戏 我想将用户的输入限制为列表的元素。你知道吗

我的代码如下

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'

我希望while循环检查list的元素,并避免用户在列表中添加X或0,而不是range(0,9)


Tags: 用户in元素列表inputifdefnot
3条回答

只需用列表替换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是一个数字。实际上,尝试从字符串中减去整数会出错。你知道吗

列出你的选择。 假设:

x = [0,1,2,3,4,5,6,7,8]

然后用x替换范围(0,9)

while not int(p1marker) in x:

你的代码,在它的当前状态实际上是非常无用的。观察:

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)。你知道吗

但是,除非您调用其中任何一个函数,否则它将毫无用处。你知道吗

相关问题 更多 >