似乎无法弄清楚我在python中的间距是怎么回事。我试图让它打印出来:
Two Vertical Lines, height=3; width=3:
* *
* *
* *
Two Vertical Lines, height=4; width=5:
* *
* *
* *
* *
Two Vertical Lines, height=5; width=2:
**
**
**
**
**
但使用此代码:
def two_vertical_lines (height, width):
for x in range (0, height):
if width > 2:
new_width = width - 2
mult2 = " " * new_width
print ("*",mult2,"*", "\n", end='')
else:
print ("**", "\n", end='')
return
出于某种原因,我的程序正在返回:
Two Vertical Lines, height=3; width=3:
* *
* *
* *
Two Vertical Lines, height=4; width=5:
* *
* *
* *
* *
Two Vertical Lines, height=5; width=2:
**
**
**
**
**
(注意两条垂直线之间的间距/宽度的差异,即使我的变量new_width在技术上应该是1个空格)
答案 0 :(得分:3)
默认情况下,print()
输出的参数以单个'分隔。 ' (空间)。但是,可以使用sep
参数更改此设置。只需使用下面的sep=''
:
def two_vertical_lines (height, width):
for x in range (0, height):
if width > 2:
new_width = width - 2
mult2 = " " * new_width
print ("*", mult2, "*", sep='') # <-- change
else:
print ("**", "\n", end='')
return
答案 1 :(得分:2)
使用print
时,传递给它的所有参数都将打印出来,并在它们之间留一个空格。
>>> print('a', 'b')
a b
要解决此问题,您可以创建一个字符串并将其打印出来,就像这样
print ("*{}*\n".format(mult2), end='')
实际上,不是在字符串中明确添加\n
,而是让print
函数来处理它,就像这样
print ("*{}*".format(mult2))
另一个改进可能是,你没有特殊情况width <= 2
的情况,因为带有零或负整数的字符串乘法只会产生空字符串。
>>> '*' * -1
''
>>> '*' * 0
''
所以你可以简单地写
def two_vertical_lines(height, width):
for x in range(height):
print("*{}*".format(" " * (width - 2)))