繁体   English   中英

如何在python中打印形状? 寻找一种不同的、更有效的方式

[英]how to print shapes in python? looking into a different and more efficient way

尝试了很多方法,比如一行一行的打印:

打印 (” - - - - ”)

打印(“| |”)打印(“| |”)

打印 (” - - - - ”)

还有 * ,

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

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

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

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

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

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

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

除非你出于某种原因需要输出纯 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或类似的全屏控制台应用程序,并让它在您的窗口周围绘制框。

咕咕方式:

def box(w,h):
   s='┌%s┐'%('─'*w)
   for i in range(int(h/2)):
      s+='\n│%s│'%(' '*w)
   s+='\n└%s┘'%('─'*w)
   return s

print(box(5,5))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM