python-3.x - 如何将字符串从循环附加到单个输出行?
问题描述
因此,我正在尝试制作一个基于文本的 connect-4 游戏,以便更好地理解 Python 及其实际工作原理。
精简版
- 如何从 while 循环的每次运行中将打印的文本附加到 while 循环之前存在的打印输出
- 在下面看到的两种方法(正在进行的工作和当前成功工作的一种)中,哪种方法是执行所需输出的更好做法?
长版
我正在尝试使用循环系统在每次转弯后以均匀间隔且美观的格式打印出数组,以便用户在下一次转弯之前清楚地反馈当前电路板的外观。为此,我希望能够拥有尽可能小的代码行,以便更容易阅读代码本身。尽管这可能不是执行此场景的最佳实践,但我想更好地理解这种编码方式,以便在需要时将其应用于未来的项目。
就实际执行而言,我正在尝试使用 while 循环将数组的 7 个位置一个接一个地附加到同一输出行中,用于同一行中的数组位置。在此之后,我想在前一行下方的行上打印下一行,如“所需输出”下面的代码所示。
预先感谢您的回答、建议和意见。
工作正在进行中
import numpy as np
ARRAY = np.zeros(shape=(6, 7), dtype = 'int8')
# In reality I will be using an empty array that gradually gets populated
# Zeros are used for ease of asking the question
def Display_board():
i = 0
while i < 7:
j = 0
print(" ", end = " ")
while j < 8:
print(str(ARRAY[i][j]))
j += 1
i += 1
进行中的输出
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
# It goes on but didn't include as it would take up unnessary space in the question
如果我将打印数组的行更改为如下,我会得到另一个不需要的输出
print(str(ARRAY[i][j]), end = " ")
#output
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 Display_board():
for i in range(6):
print(" " + str(ARRAY[i][0]) + " " + str(ARRAY[i][1]) + " " + str(ARRAY[i][2]) \
+ " " + str(ARRAY[i][3]) + " " + str(ARRAY[i][4]) + " " + str(ARRAY[i][5])\
+ " " + str(ARRAY[i][6]))
期望的输出
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 display_board1(board):
m, n = board.shape
for i in range(m):
for j in range(n):
print(board[i][j], end= ' ')
print()
return 1
第二个:
def display_board2(board):
s = board.__str__()
s = s.replace('[', ']')
s = s.replace(']', '')
s = ' ' + s
print(s)
return 1
这些return 1
语句仅用于绘图,如果您不想要它们,请删除它们
这是它们在输入大小方面的性能
display_board2()
更快,更稳定
import perfplot
bench = perfplot.bench(
setup= np.zeros,
kernels= [
display_board1,
display_board2
],
n_range= [(i, i) for i in range(10)],
)
bench.show()
推荐阅读
- javascript - 数组的Javascript排序方法
- c# - 将依赖注入与单例设计模式混合
- css - 如何在气泡图中连接两个气泡?
- database - http://hub.docker.com/ 使用什么解决方案?
- google-pagespeed - PageSpeed Insights 分数多久更新一次?
- php - 使用 eloquent 从多个连接中检索数据
- ruby-on-rails - 使用全局变量从 render_to_string 输出内容
- javascript - Node.js - 在不使用 FS 库的情况下附加 JSON 文件 - require('fs)
- asp.net-mvc - MVC Asp.net - 在按钮单击时调用重定向到 URL 的 ActionResult
- node.js - 谷歌云功能不会被触发