首页 > 解决方案 > 如何在python中打印形状?寻找一种不同的、更有效的方式

问题描述

试过很多方法,比如逐行打印:

打印 (” - - - - ”)

打印 ("| |") 打印 ("| |")

打印 (” - - - - ”)

还有 * ,

打印 (”********”)

打印(“* ”)打印(“ *”)

打印 (”********”)

就个人而言,我认为破折号 (-) 看起来比星星 (*) 更平滑。还有其他方法可以做到这一点吗?

标签: pythonshapes

解决方案


您更愿意拥有以下哪一项:

┌────────┐
│        │
│        │
└────────┘

 --------
|        |
|        |
 --------

除非你出于某种原因需要输出纯 ASCII——或者你想要那种复古的 APPLE ][ 外观——你应该用画框字符绘制盒子。这实际上并不比用连字符和管道以及其他不用于画线的东西来绘制它们更难:

horiz = '\u2500'
vert = '\u2502'
ul = '\u250c'
ur = '\u2510'
ll = '\u2514'
lr = '\u2518'

def box(width, height):
  top = ul + horiz*(width-2) + ur
  middle = vert + ' '*(width-2) + vert
  bottom = ll + horiz*(width-2) + lr
  lines = [top] + [middle]*(height-2) + [bottom]
  return '\n'.join(lines)

print(box(10, 4))

有时甚至更容易从 PyPI 中获取你想要的库,例如terminaltables用于绘制带边框的表格,或asciitree用于绘制树,如 DOS 和 Unix 树命令等。


或者,根据您要执行的操作,也许您实际上想要编写一个cursesurwid类似的全屏控制台应用程序,并让它在您的窗口周围绘制框。


推荐阅读