我试图建立一个井字游戏,我有麻烦,使一个工作功能,以检查董事会是否已满。我的董事会名单是board = [' ',' ',' ',' ',' ',' ',' ',' ',' ']
我的职能是
def fullBoard():
"""Returns a boolean value reporting the state of the board, full or not.
True for full, False for not full."""
for y in board:
if board[y] == ' ':
return False
print(False)
break
else:
print(True)
return True
我要它做的是搜索列表中的每个项,当它找到一个“”或空格时,它返回false并中断循环。但如果不存在“”,则返回真值,表示电路板已满(我在试图修复该死的问题时,只是为了我的缘故才把打印函数放进去)
我原以为这样行得通,但我得到了TypeError:列表索引必须是整数或切片,而不是引用我的if board[y] == ' ':
行的str。如果有人知道如何让它按照我想要的方式工作,那就太好了。另外请注意,我只在comp prog 1中,处于非常基本的水平,所以简单性最好。(也请不要试图缩短或跑得更快。我只想知道我犯了什么错误,这样我就能从中吸取教训。)非常感谢!在
当您执行循环时(对于board中的y),y已经是board列表中的元素,您不需要索引它(board[y])。只需将board[y]替换为y,就可以解决您的问题了。在
你的代码是完全正确的,但是有一点。看看board怎么不是字典,而是列表?列表没有键/值对。在
下面是固定代码:
比你现在做的更容易。误解在您的
for
循环中。迭代列表时,y
的值不是board
列表中项目的索引,而是每个项目的值。在所以:
混淆的根源可能来自这样一个事实:当使用for循环迭代python dict时,变量(在本例中是
y
)实际上是字典键。然后你需要使用这个键来访问字典中那个位置的值。但那是为了字典。。你有一张单子。因此没有必要这样做。在但还有一种更快的方法:
^{pr2}$就这样。。没有
for
,没有什么。Python的in
运算符告诉您某个值是否包含在列表(或某些其他类型)中。在如果你想变得更简单。。只是:
就这样。。只有一行代码。它的工作方式是。。}如果board中没有空格值的项。但是如果有空格,则需要
' ' in board
的值为True
,如果board
中的任何项是空格,则{False
值,如果没有空格,则需要True
。。因此,通过将not
放在前面,您可以反转该值。。把真变成假,反之亦然。在既然您正在学习,那么采用这种最小方法并不一定是好的,但是我想我会把它添加到我的答案中,这样您就可以更好地理解python是如何处理这些事情的。在
相关问题 更多 >
编程相关推荐