gpt4 book ai didi

python - 在python中绘制像蛇和梯子棋盘游戏的网格

转载 作者:行者123 更新时间:2023-11-28 21:05:39 27 4
gpt4 key购买 nike

我想在 python 中绘制一个普通的终端网格,或者您可以只以蛇形和梯形方式打印数字。底线将按顺序从 1 到 10,上面的线应该是 11 到 20,但顺序相反,一直到 100。我如何使用 Python 实现这一点?对此的可扩展解决方案将不胜感激。谢谢。

编辑:好的,我想到了这个解决方案。有没有其他方法可以实现。也许是一种更像 Python 的方式,或者时间和空间复杂度更低?

numbers = [i+1 for i in range(100)]
numbers = numbers[::-1]
levels = [i for i in numbers[::-10]]
is_reversed = False

for level in levels:

if is_reversed:
for number in reversed(numbers[level-1:level+9]):
print('{:4}'.format(number), end='')
else:
for number in numbers[level-1:level+9]:
print('{:4}'.format(number), end='')

is_reversed = not is_reversed
print()

最佳答案

下面使用列表理解首先制作列表,然后每隔一行反转一次。关键是好的 ol' 模 %

rows = [[f'{(n+1) + (i*10):4}' for n in range(10)] for i in range(10)]
rows = reversed([reversed(rows[i]) if i%2 else rows[i] for i in range(len(rows))])

for row in rows:
print(' | '.join(row))

结果:

 100 |   99 |   98 |   97 |   96 |   95 |   94 |   93 |   92 |   91
81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90
80 | 79 | 78 | 77 | 76 | 75 | 74 | 73 | 72 | 71
61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70
60 | 59 | 58 | 57 | 56 | 55 | 54 | 53 | 52 | 51
41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50
40 | 39 | 38 | 37 | 36 | 35 | 34 | 33 | 32 | 31
21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30
20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10

编辑:

最近的性能测试表明,enumerate 比使用 range 和索引更高效。这会将第二行更改为:

rows = reversed([reversed(row) if i%2 else row for i, row in enumerate(rows)])

关于python - 在python中绘制像蛇和梯子棋盘游戏的网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43708871/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com