【发布时间】:2017-12-12 04:11:53
【问题描述】:
我正在开发一款井字游戏,一切都很顺利,但我想知道是否有更好的方法来执行以下代码:
def straight_check(play_board, item):
inc_up = 1
inc_down = 1
for num in range(3):
for second in range(3):
if play_board[second][num] == 'x':
if inc_up == 3:
return True
inc_up += 1
else:
continue
if play_board[num][second] == 'x':
if inc_down == 3:
return True
inc_down += 1
else:
continue
return False
这个函数接收游戏的棋盘(一个 3x3 嵌套列表)以及用户字符(x 或 o)。此函数检查用户字符是否在板上连续出现 3 次(水平或垂直)。有没有另一种方法可以在不使用嵌套 for 循环和变量的情况下做到这一点?还有,这种编程方式和编程大小一起是好的做法吗?
【问题讨论】:
-
来自 Python 之禅:“扁平胜于嵌套”。无论如何——这更像是Code Review 的问题,而不是这里。
-
嵌套循环基本上没有什么“坏”,我认为您的代码没有任何问题。请注意您在这些循环中所做的事情(例如实例化大型对象),因为这可能会造成性能问题。
-
对。不错,你应该永远不要做这件事,但不好的是,当有更有效的算法可以避免它时,这是你不应该做的事情 .
-
“吃蘑菇对你有好处吗?” - 如果它们有毒,则不会。嵌套循环也是如此 - 取决于您使用它们的目的。
-
@djk47463 “行”(或“列”)的数量只有 O(n^2),但项目总数为 O(N)。
标签: python python-2.7 tic-tac-toe