python字符串中的间距

时间:2016-03-29 02:37:22

标签: python string python-3.x spacing

似乎无法弄清楚我在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个空格)

2 个答案:

答案 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)))