【问题标题】:Python: How to check that every character in a list is not ' '?Python:如何检查列表中的每个字符都不是''?
【发布时间】:2019-02-20 17:01:15
【问题描述】:

我正在Python 中构建一个简单的井字游戏。

我有一个包含 10 个空格的列表,我将每个空格替换为 XO。我希望它能够告诉董事会何时已满,并且没有赢家。我已经列出了所有获胜的可能性,这是我试图让它检查平局的尝试。

for char in begin_board[1:10]: if char != ' ': print("It's a draw!")

这是错误的,因为它只检查9 中的1 是否不是空格。我希望它检查并仅在所有 9 不是空格时才返回打印。

提前致谢!

【问题讨论】:

  • 相信你在找if not ' ' in begin_board: ...
  • 您有几个选择。您可以简单地计算移动的数量,并在完成一定数量的移动后意识到棋盘已满。或者你可以使用all()if all(c != ' ' for c in begin_board[1:10]):。或者最简单的if ' ' not in begin_board[1:10]:

标签: python


【解决方案1】:

您可以通过检查空字符串来检查是否定的 not in 您的列表。

if ' ' not in board:
     # Board is full.

如果您使用'' 作为空方值,您还可以使用all() 来检查所有值是否为True。一个空字符串在 Python 中已经有一个 False 值,而任何其他字符串都是 True,所以你可以直接测试板子。

>>> board = ['x', 'x', '']
>>> all(board)
False

>>> board = ['x', 'x', 'o']
>>> all(board)

你会把它当作

if all(board):
    # Board is full.

【讨论】:

    【解决方案2】:

    首先,begin_board[1:10] 将仅列出第 2 至第 9。如果这是你想要的行为,那么这很好,如果你想要所有元素,那么只需在 begin_board 中执行 for i ,它将列出从第一个到第十个的所有元素

    如果我们要使用您自己的代码,那么这可以通过使用 isDraw 标志并检查是否还有剩余空间来完成。

    for i in begin_board:
        if char==' ':
            isDraw = False
    if (isDraw):
        print("It's a draw!")
    

    不过,实现此目的的更好方法是计算列表中有多少个空格。

    if (begin_board.count(' ') == 0):
        print("It's a draw")
    

    另一种方法是检查板上是否存在空格。

    if ' ' not in begin_board:
        print("It's a draw")
    

    【讨论】:

      猜你喜欢
      • 2022-11-24
      • 2015-10-03
      • 1970-01-01
      • 2020-06-28
      • 1970-01-01
      • 2016-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多