我想用python创建一个二进制拼图。 目前我已经制作了6x6,8x8和10x10布局,根据玩家希望玩的难度进行展示。拼图的目的可以与数独游戏进行比较,您希望玩家在给定位置输入0或1。您将在下面找到我目前的布局。
if graad == 1:
easy = [['A', 'B', 'C', 'D', 'E'],
['_','_','_','_','_','_','_'],
[0,1,0,1,0,1,' |1'],
[1,0,1,0,1,0,' |2'],
[0,1,0,1,0,1,' |3'],
[1,0,1,0,1,0,' |4'],
[0,1,0,1,0,1,' |5'],
[1,0,1,0,1,0,' |6']]
i = 0
while i < len(easy):
j = 0
s = ""
while j < len(easy[i]):
s = s + str(easy[i][j]) + " "
j = j + 1
print (s)
i = i + 1
现在我面临的问题是,如果玩家填写C列第3位和第5行填0,我怎么能让python知道呢? 我正在考虑一个IF语句来检查A,B,CD,E ......行1,2,3,4,5 ..的输入,但这将是很多if语句。
Edit1:好的,以便澄清。我想发布一张图片但需要更多帖子。 例如,我有一个6x6单元的游戏板。其中一些填充了1,其中一些填充为0,其中大多数都是空的,因为目标是让它看起来像我在python代码中的布局一样。(这就是解决方案)。所以你希望用户填写那些空单元格。 现在,让我们说玩家希望用1填充A-1,python如何知道输入A-1链接到列表中的索引[0] [0]?
答案 0 :(得分:0)
将字母索引转换为数字的简单方法是使用ord()函数,该函数返回单个字符的数字代码。由于您使用的是大写字母,因此使用&#39; A&#39;作为索引为0的列的标签,您可以
column = ord(letter) - ord('A')
这将转换&#39; A&#39;到0,&#39; B&#39;等1,等等。
这是一个简短的示例程序,模糊地基于您问题的代码。
它接受A10
形式的移动,将位置A1设置为&#39; 1&#39;,&#39; B30&#39;将位置B3设置为&#39; 0&#39;。它也接受小写字母,因此&#39; d11&#39;与&#39; D11&#39;相同。按Ctrl-C退出。
在Python 2.6.6上测试,但它应该在Python 3上正常工作。(要在Python 2上运行它,将input()
更改为raw_input()
)。
#! /usr/bin/env python
def print_grid(g):
gsize = len(g)
base = ord('A')
print(' '.join([chr(base + i) for i in range(gsize)]))
print((gsize * 2) * '-')
for i, row in enumerate(g, 1):
print(' '.join(row) + ' | ' + str(i))
print('\n')
def main():
gsize = 9
rowstr = gsize * '_'
grid = [list(rowstr) for i in range(gsize)]
print_grid(grid)
while True:
move = input('Enter move: ')
letter, number, bit = move.strip()
col = ord(letter.upper()) - ord('A')
row = int(number) - 1
grid[row][col] = bit
print_grid(grid)
if __name__ == "__main__":
main()
答案 1 :(得分:0)
如果您使用pandas DataFrame来保存游戏的正确答案,您可以轻松查看内容。 pandas包有一个很好的文档(在stackoverflow上有很多Q&amp; A)。
正确答案的设置:
import pandas as pd
data = [[0,1,0,1,0,1],
[1,0,1,0,1,0],
[0,1,0,1,0,1],
[1,0,1,0,1,0],
[0,1,0,1,0,1],
[1,0,1,0,1,0]]
easy = pd.DataFrame(data)
easy.columns = ['A','B','C','D','E','F']
print easy
位置'A',0
的项目(python从0开始编号)由easy['A'][0]
给出。有关为pandas DataFrame对象编制索引的详细信息,请访问the documentation。
另一个有用的东西,DataFrame对象是可打印的,因此不必自己编写print
命令。
如果使用DataFrames对你来说太过分了,另一个选择是使用&#39;翻译&#39;字典。该字典将使用键的字母和相应的列号作为值。
>>> column = {'A':0, 'B':1, 'C':2, 'D':3, 'E':4, 'F':5}
>>> print column['A']
0