为什么此循环不更改 excel 文件中的列
Why does this loop not change the columns in th excel file
当一轮 ends.The csv 必须按如下所示显示游戏板时,我正在尝试创建一个循环来保存四人连线游戏的进度。每个空白点由一个
'0','O' 由 '2' 表示,'X' 由 1 表示。现在,虽然这个循环应该遍历并更改 csv 文件中的行和列,我把所有的东西都堆在一栏里。这是为什么?
if turn == 'X':
turn = "O"
else:
board_deepcopy = copy.deepcopy(my_board)
ans = input('Type s to save your progress : ')
if ans == 's':
nop = input('Type in the name of your save file :')
f = open(nop + '.csv', 'a', newline = '')
writer = csv.writer(f)
for y in range(board_col):
list1 = []
for l in range(board_col):
if my_board[y][l] == 'X':
board_deepcopy[y][l] = '1'
list1.append(board_deepcopy[y][l])
writer.writerow(list1[l])
elif my_board[y][l] == 'O':
board_deepcopy[y][l] = '2'
list1.append(board_deepcopy[y][l])
writer.writerow(list1[l])
else:
board_deepcopy[y][l] = '0'
list1.append(board_deepcopy[y][l])
writer.writerow(list1[l])
f.close()
turn = 'X'
(显示示例
8 列和 8 行的板,第 1 列上有一个 'X',第 2 列上有一个 'O':)
windows 终端机:
1 2 3 4 5 6 7 8
________________________________________
A|' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '|
B|' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '|
C|' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '|
D|' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '|
E|' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '|
F|' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '|
G|' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '|
H| X O ' ' ' ' ' ' ' ' ' ' ' '|
---------------------------------------
csv 显示:
A B C D E F G H
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 1
...
16 2
17 0
18 0
19 0
...
64 0
您的 for
循环没有按照您的意愿进行。您正在追加到您的列表,但随后您 直接 将新追加的元素保存到您的 csv file
。您要做的是在 inner for loop
完成文件处理后保存整个列表,然后继续 outer for loop
。以下是我认为您想要设计循环的方式:
import csv
board_col = 4
my_board = [['X', '0', '0', '0'],
['0', 'X', '0', '0'],
['0', '0', 'X', '0'],
['0', '0', '0', 'X']]
f = open('try.csv', 'a', newline = '')
writer = csv.writer(f)
for y in range(board_col):
list1 = []
for l in range(board_col):
if my_board[y][l] == 'X':
list1.append('1')
elif my_board[y][l] == 'O':
list1.append('2')
else:
list1.append('0')
writer.writerow(list1)
f.close()
当一轮 ends.The csv 必须按如下所示显示游戏板时,我正在尝试创建一个循环来保存四人连线游戏的进度。每个空白点由一个 '0','O' 由 '2' 表示,'X' 由 1 表示。现在,虽然这个循环应该遍历并更改 csv 文件中的行和列,我把所有的东西都堆在一栏里。这是为什么?
if turn == 'X':
turn = "O"
else:
board_deepcopy = copy.deepcopy(my_board)
ans = input('Type s to save your progress : ')
if ans == 's':
nop = input('Type in the name of your save file :')
f = open(nop + '.csv', 'a', newline = '')
writer = csv.writer(f)
for y in range(board_col):
list1 = []
for l in range(board_col):
if my_board[y][l] == 'X':
board_deepcopy[y][l] = '1'
list1.append(board_deepcopy[y][l])
writer.writerow(list1[l])
elif my_board[y][l] == 'O':
board_deepcopy[y][l] = '2'
list1.append(board_deepcopy[y][l])
writer.writerow(list1[l])
else:
board_deepcopy[y][l] = '0'
list1.append(board_deepcopy[y][l])
writer.writerow(list1[l])
f.close()
turn = 'X'
(显示示例 8 列和 8 行的板,第 1 列上有一个 'X',第 2 列上有一个 'O':) windows 终端机:
1 2 3 4 5 6 7 8
________________________________________
A|' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '|
B|' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '|
C|' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '|
D|' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '|
E|' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '|
F|' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '|
G|' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '|
H| X O ' ' ' ' ' ' ' ' ' ' ' '|
---------------------------------------
csv 显示:
A B C D E F G H
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 1
...
16 2
17 0
18 0
19 0
...
64 0
您的 for
循环没有按照您的意愿进行。您正在追加到您的列表,但随后您 直接 将新追加的元素保存到您的 csv file
。您要做的是在 inner for loop
完成文件处理后保存整个列表,然后继续 outer for loop
。以下是我认为您想要设计循环的方式:
import csv
board_col = 4
my_board = [['X', '0', '0', '0'],
['0', 'X', '0', '0'],
['0', '0', 'X', '0'],
['0', '0', '0', 'X']]
f = open('try.csv', 'a', newline = '')
writer = csv.writer(f)
for y in range(board_col):
list1 = []
for l in range(board_col):
if my_board[y][l] == 'X':
list1.append('1')
elif my_board[y][l] == 'O':
list1.append('2')
else:
list1.append('0')
writer.writerow(list1)
f.close()