python 字符串中的间距
Spacing in python string
似乎无法弄清楚我在 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:
**
**
**
**
**
(注意两条垂直线之间 spacing/width 的区别,即使我的变量 new_width 技术上应该是 1 space)
当您使用 print
时,所有传递给它的参数将被打印出来,并在它们之间添加一个 space。
>>> print('a', 'b')
a b
要解决这个问题,您可以创建一个字符串并打印它,就像这样
print ("*{}*\n".format(mult2), end='')
实际上,您可以让 print
函数处理它,而不是在字符串中显式添加 \n
,就像这样
print ("*{}*".format(mult2))
另一个改进可能是,您不必特殊情况,width <= 2
情况,因为字符串与零或负整数相乘只会产生空字符串。
>>> '*' * -1
''
>>> '*' * 0
''
所以你可以简单地写
def two_vertical_lines(height, width):
for x in range(height):
print("*{}*".format(" " * (width - 2)))
默认情况下,print()
输出其参数,并用单个 ' ' (space) 分隔。但是,这可以使用 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
似乎无法弄清楚我在 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:
**
**
**
**
**
(注意两条垂直线之间 spacing/width 的区别,即使我的变量 new_width 技术上应该是 1 space)
当您使用 print
时,所有传递给它的参数将被打印出来,并在它们之间添加一个 space。
>>> print('a', 'b')
a b
要解决这个问题,您可以创建一个字符串并打印它,就像这样
print ("*{}*\n".format(mult2), end='')
实际上,您可以让 print
函数处理它,而不是在字符串中显式添加 \n
,就像这样
print ("*{}*".format(mult2))
另一个改进可能是,您不必特殊情况,width <= 2
情况,因为字符串与零或负整数相乘只会产生空字符串。
>>> '*' * -1
''
>>> '*' * 0
''
所以你可以简单地写
def two_vertical_lines(height, width):
for x in range(height):
print("*{}*".format(" " * (width - 2)))
默认情况下,print()
输出其参数,并用单个 ' ' (space) 分隔。但是,这可以使用 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