Python3.43:创建网格并使用sys.stdout.write()
我知道这很可能是以前问过的,我只是希望在几个小时的搜索后得到一些见解。我正在尝试使用Python3.43创建一个网格Python3.43:创建网格并使用sys.stdout.write(),python,python-3.x,Python,Python 3.x,我知道这很可能是以前问过的,我只是希望在几个小时的搜索后得到一些见解。我正在尝试使用Python3.43创建一个网格 + - - + - - + | | | | | | + - - + - - + | | | | | | + - - + - - + 这是到目前为止我的代码,我成功地获得了前4列和7行。问题在于将其扩展为一种模式,再制作两个接线盒以形成一个网格 print ('#1') corner = '+' bar = ' -'
+ - - + - - +
| | |
| | |
+ - - + - - +
| | |
| | |
+ - - + - - +
这是到目前为止我的代码,我成功地获得了前4列和7行。问题在于将其扩展为一种模式,再制作两个接线盒以形成一个网格
print ('#1')
corner = '+'
bar = ' -'
side = '|'
space = ' '
top_row = corner + bar + bar + space + corner
sides = side + space*5 + side
def do_twice(func,arg):
func(arg)
func(arg)
def sides(width):
sides = side + (space * width) + side
print (sides)
def top(length):
top_row = corner + (bar * length) + space + corner
print(top_row)
top(2)
do_twice(sides,5)
top(2)
do_twice(sides,5)
top(2)
这给了我网格的一面。对于那些有python经验的人来说,它可能看起来很初级,但我只是试图掌握基本知识。我尝试为顶行添加另一面的方法是:
import sys
def top(length):
top_row = corner + (bar * length) + space + corner
print(top_row),(sys.stdout.write(' - - +'))
它实际上很有帮助,但它在最后返回“None”,我认为这是因为我基本上打印了两次,但我的意图是在同一行中添加文本。结果是:
+ - - + - - + None
| |
| |
+ - - + - - + None
| |
| |
+ - - + - - + None
有人对我如何扩展此函数或其他方法以在同一行上打印有任何想法吗
我真的很感激,谢谢您抽出时间。试试:
left = corner + (space + bar)*length + space
top = left + corner + left[::-1]
print(top)
<代码> [::-1 ] < /代码>反转字符串,网格的左半部是右半部分的反射,但中间有一个角。
你说得对,为什么那里没有一个None
。我建议不要在同一个位置使用print
和sys.stdout.write
,因为它们是同一件事,会使代码不必要地混淆
应该有一个——最好只有一个——显而易见的方法来做到这一点
-巨蟒之禅,蒂姆·彼得斯
尝试:
<代码> [::-1 ] < /代码>反转字符串,网格的左半部是右半部分的反射,但中间有一个角。
你说得对,为什么那里没有一个None
。我建议不要在同一个位置使用print
和sys.stdout.write
,因为它们是同一件事,会使代码不必要地混淆
应该有一个——最好只有一个——显而易见的方法来做到这一点
-巨蟒之禅,蒂姆·彼得斯
在Python3.x中,print()接受一个“end”参数,该参数告诉函数在打印完所有参数后要打印什么。该参数默认为“\n”,以便打印后函数移到下一行。如果要在同一行上继续打印,只需使用end=''
关于生成网格,您似乎知道将字符串乘以整数会重复字符串(例如,bar*length=>'-'-')。在Python 3.x中,print()接受一个“end”参数,该参数告诉函数在打印完所有参数后打印什么。该参数默认为“\n”,以便打印后函数移到下一行。如果要在同一行上继续打印,只需使用end=''
关于制作网格:您似乎知道将字符串乘以整数会重复该字符串(例如,bar*length=>'-')。您似乎还认识到可以通过添加'-+'来扩展行。把这些想法放在一起,你会得到:
cell_width = 2
grid_width = 3
hpart = bar*cell_width + space + corner # -> ' - - +'
hline = corner + hpart*grid_width # -> '+ - - + - - + - - +'
同样的技术也可用于制作垂直线:
'| | | |'
然后是行部分:
'| | | |\n'
'| | | |\n'
'+ - - + - - + - - +\n'
然后网格是hline+row\u part*grid\u height。在Python 3.x中,print()接受一个“end”参数,告诉函数在打印完所有参数后打印什么。该参数默认为“\n”,以便打印后函数移到下一行。如果要在同一行上继续打印,只需使用end=''
关于生成网格,您似乎知道将字符串乘以整数会重复字符串(例如,bar*length=>'-'-')。在Python 3.x中,print()接受一个“end”参数,该参数告诉函数在打印完所有参数后打印什么。该参数默认为“\n”,以便打印后函数移到下一行。如果要在同一行上继续打印,只需使用end=''
关于制作网格:您似乎知道将字符串乘以整数会重复该字符串(例如,bar*length=>'-')。您似乎还认识到可以通过添加'-+'来扩展行。把这些想法放在一起,你会得到:
cell_width = 2
grid_width = 3
hpart = bar*cell_width + space + corner # -> ' - - +'
hline = corner + hpart*grid_width # -> '+ - - + - - + - - +'
同样的技术也可用于制作垂直线:
'| | | |'
然后是行部分:
'| | | |\n'
'| | | |\n'
'+ - - + - - + - - +\n'
然后网格是hline+row\u part*网格高度