我需要制作一个充满 0 和 1 的棋盘图案,但它不一定是方桌 我需要从用户那里获取行和列
只是一个例子:
1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0
我有解决方案,但我无法理解最后一行代码(
table[i][j] = int(not table[i][j-1])
)
我们可以用其他方法解决吗?
m = int(input("insert number of rows: "))
n = int(input("insert number of colomns: "))
table = list()
for i in range(0,m):
if i%2 == 0 :
table[i][0] = 1
else:
table[i][0] = 0
for j in range(1,n):
table[i][j] = int(not table[i][j-1])
print("print the table with chessboard pattern")
for i in range(0,m):
for j in range(0,n):
print(table[i][j],end='')
print()
使用正在生成的单元格的
x
和 y
坐标以及模运算符 %
在两个值之间交替使用嵌套列表理解,您将获得更简单的时间:
n_rows = n_cols = 5
table = [
[((x + y + 1) % 2) for x in range(n_cols)]
for y in range(n_rows)
]
for row in table:
print(*row)
打印出来
1 0 1 0 1
0 1 0 1 0
1 0 1 0 1
0 1 0 1 0
1 0 1 0 1
列表推导式也可以写成嵌套的 for 循环。
table = []
for y in range(n_rows):
row = []
for x in range(n_cols):
row.append((x + y + 1) % 2)
table.append(row)
您将在第 6 行遇到错误,因为您无法为不存在的索引分配值..
您可以这样做:
m = int(input("insert number of rows: "))
n = int(input("insert number of columns: "))
table = []
for i in range(m):
if i%2==0:
table.append([0+j%2 for j in range(n)])
else:
table.append([0+j%2 for j in range(1, n+1)])
您也可以这样打印:
print("".join([str(row).replace('[', '').replace(']', '\n').replace(', ', ' ') for row in table]))