python - 如何用函数重新分配变量?
问题描述
我有一个名为 board 的列表,如下所示:
board = [[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0]]
我编写了一个函数,将这个板输出到控制台,看起来像一个数独板:
def print_board(bo):
for i in range(len(bo)):
if i % 3 == 0 and i != 0:
print("- - - + - - - + - - -")
for j in range(len(bo[0])):
if j % 3 == 0 and j != 0:
print("| ", end="")
if j == 8:
print(bo[i][j])
else:
print(str(bo[i][j]) + " ", end="")
print_board(board)
>>>
0 0 0 | 0 0 0 | 0 0 0
0 0 0 | 0 0 0 | 0 0 0
0 0 0 | 0 0 0 | 0 0 0
- - - + - - - + - - -
0 0 0 | 0 0 0 | 0 0 0
0 0 0 | 0 0 0 | 0 0 0
0 0 0 | 0 0 0 | 0 0 0
- - - + - - - + - - -
0 0 0 | 0 0 0 | 0 0 0
0 0 0 | 0 0 0 | 0 0 0
0 0 0 | 0 0 0 | 0 0 0
现在我不想将此板输出到控制台,而是将变量板重新分配给一个字符串,即“转换”板。我该怎么做?
解决方案
只需考虑打印的行为,然后分配一个空字符串,并继续将您打印的任何内容连接到该字符串。
所以对于一个普通print
的,在字符串的末尾追加一个换行符,对于一个print with end=""
参数,我们不会追加任何东西,也将整数转换为字符串
def print_board(bo):
s = ''
for i in range(len(bo)):
if i % 3 == 0 and i != 0:
s += "- - - + - - - + - - -\n"
for j in range(len(bo[0])):
if j % 3 == 0 and j != 0:
s += "| "
if j == 8:
s += str(bo[i][j])+'\n'
else:
s += str(bo[i][j]) + " "
return s
然后你的输出将是
board = [[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0]]
print(print_board(board))
0 0 0 | 0 0 0 | 0 0 0
0 0 0 | 0 0 0 | 0 0 0
0 0 0 | 0 0 0 | 0 0 0
- - - + - - - + - - -
0 0 0 | 0 0 0 | 0 0 0
0 0 0 | 0 0 0 | 0 0 0
0 0 0 | 0 0 0 | 0 0 0
- - - + - - - + - - -
0 0 0 | 0 0 0 | 0 0 0
0 0 0 | 0 0 0 | 0 0 0
0 0 0 | 0 0 0 | 0 0 0
推荐阅读
- javascript - Axios CORS Vultr S3“无‘访问控制允许来源’”
- oracle - Oracle Apex 日期选择器行为异常
- swift - 如何检测应用程序何时安装并首先启动?
- flutter - Flutter:List.sort()降序中的错误索引删除
- typescript - TypeScript 类中第一个定义的方法未正确键入(但之后的所有内容)使用键入 this 的函数
- c++ - Ofstream 不写入文件?
- c++ - 在代码块中调试数组
- java - java扩大最终变量
- php - substr_compare() 在 php 中返回错误的值
- node.js - 通过数据库和表格中的参数比较模型