Python函数中有条件地输出列表值
我正在做一个简单的控制台游戏,我需要一个函数,根据棋盘的状态和它接收到的参数,以不同的方式显示棋盘 棋盘是一个2d列表,它要么有一个对游戏有意义的值,要么有一个Python函数中有条件地输出列表值,python,multidimensional-array,iteration,conditional-statements,Python,Multidimensional Array,Iteration,Conditional Statements,我正在做一个简单的控制台游戏,我需要一个函数,根据棋盘的状态和它接收到的参数,以不同的方式显示棋盘 棋盘是一个2d列表,它要么有一个对游戏有意义的值,要么有一个空白点 如何修改函数,使其在嵌套循环中检查当前位置是否在可见的参数中,如果是,请在该位置显示列表的值?元组表示(行、列) 我已经将我的循环调整为使用range而不是作为…中的项,因为我预计我将需要这些I,j值 def display_cards(board, visible=[(0, 2), (1, 0)]): prin
空白点
如何修改函数,使其在嵌套循环中检查当前位置是否在可见的参数中,如果是,请在该位置显示列表的值?元组表示(行、列)
我已经将我的循环调整为使用range
而不是作为…
中的项,因为我预计我将需要这些I,j
值
def display_cards(board, visible=[(0, 2), (1, 0)]):
print(visible)
for i in range(4):
for j in range(4):
if board[i][j] == EMPTY_SPOT:
print(EMPTY_SPOT)
else:
print(HIDDEN_CARD, end=EMPTY_SPOT)
print()
您可以检查坐标元组是否在可见的集合中。此外,还应避免将可变对象设置为默认参数值,因为行为可能会发生变化
您可以检查坐标元组是否在可见的集合中。此外,还应避免将可变对象设置为默认参数值,因为该行为可能是可变的。您可以使用in
关键字检查坐标是否可见
def显示卡(板,可见={(0,2)、(1,0)}):
打印(可见)
对于范围(4)中的i:
对于范围(4)内的j:
如果(i,j)处于可见状态:
打印(板[i][j])
elif板[i][j]==空点:
打印(空白点)
其他:
打印(隐藏卡,结束=空点)
打印()
注
- 使用集合而不是列表来显示,查找将更快
- 你可以生成一个生成器,然后打印出来,它会更快更干净
def显示卡评估(板,可见={(0,2)、(1,0)}):
打印(可见)
对于范围(4)中的i:
对于范围(4)内的j:
如果(i,j)处于可见状态:
收益率委员会[i][j]
elif板[i][j]==空点:
产生空位
其他:
产生隐藏的\u卡,结束=空\u点
def显示卡(评估):
关于评价中的要素:
打印(元素)
显示卡(显示卡评估(板))
您可以使用
中的关键字检查坐标是否可见
def显示卡(板,可见={(0,2)、(1,0)}):
打印(可见)
对于范围(4)中的i:
对于范围(4)内的j:
如果(i,j)处于可见状态:
打印(板[i][j])
elif板[i][j]==空点:
打印(空白点)
其他:
打印(隐藏卡,结束=空点)
打印()
注
- 使用集合而不是列表来显示,查找将更快
- 你可以生成一个生成器,然后打印出来,它会更快更干净
def显示卡评估(板,可见={(0,2)、(1,0)}):
打印(可见)
对于范围(4)中的i:
对于范围(4)内的j:
如果(i,j)处于可见状态:
收益率委员会[i][j]
elif板[i][j]==空点:
产生空位
其他:
产生隐藏的\u卡,结束=空\u点
def显示卡(评估):
关于评价中的要素:
打印(元素)
显示卡(显示卡评估(板))
您所展示的代码到底有什么问题?它没有实现所需的功能。为什么您认为会这样?可见列表在实际逻辑中根本不使用。我知道-因此“我如何修改我的函数,以便它在嵌套循环中检查当前位置是否在可见参数中,如果是,请在该位置显示列表的值?元组表示(行、列)。”因此,代码编写或教程服务都不可用;这里有一个有用的更合适的资源集合:您所展示的代码到底有什么问题?它没有实现所描述的所需功能。为什么您认为会这样?可见列表在实际逻辑中根本不使用。我知道-因此“我如何修改我的函数,以便它在嵌套循环中检查当前位置是否在可见参数中,如果是,请在该位置显示列表的值?元组表示(行、列)。”因此,代码编写或教程服务都不可用;这里有一个有用的更合适的资源集合:不,这种行为不会出乎意料,因为它不会修改函数中的可变对象。是的,但是如果稍后有人来修改它,那么这可能是一个问题。只是一个一般性的建议,但你是对的,因为这不会引起任何问题。在这里也不是问题。因为另一个人也应该知道这种行为。不,这种行为不会是意外的,因为它不会修改函数中的可变对象。对,但是如果稍后有人来修改它,那么这可能是一个问题。只是一个一般性的建议,但你是对的,因为这不会引起任何问题。在这里也不是问题。另一个人也应该知道这一点。使用一个集合需要+1,但是如何使用生成器会更快呢?似乎瓶颈是使用set时多次调用print
+1,但是如何使用生成器更快呢?瓶颈似乎是对print
的多次调用。
def display_cards(board, visible):
print(visible) # Assume visible is {(0, 2), (1, 0)}
for i in range(4):
for j in range(4):
if (i, j) in visible:
# The current position is in visible...
if board[i][j] == EMPTY_SPOT:
print(EMPTY_SPOT)
else:
print(HIDDEN_CARD, end=EMPTY_SPOT)
print()