当字符串乘以任意数字时 print() 出错,为什么会这样?

print() go wrong when multiple a string by any number, why does that happen?

当我使用 print() 进行字符串乘法时,它会在每行的开头打印出一个额外的 space (" ")。奇怪的。谁能解释为什么?

我正在用 python 编写马里奥程序。该程序应该 运行 像这样

$ python mario.py
Height: 4
   #
  ##
 ###
####

这是我的代码

import cs50

while True:
    height = cs50.get_int("Height: ")
    if height > 0 and height < 9:
        break

for i in range(1, height + 1):
    print( " " * (height - i), "#" * i)


虽然结果给了我这个

~/ $ python mario.py
Height: 4
    #
   ##
  ###
 ####

如您所见,每行前面都有额外的 space,这根本不应该存在。

print 用 space 分隔它的参数,你的计算是正确的,但多了一个 space。 将其更改为:

import cs50

while True:
    height = cs50.get_int("Height: ")
    if height > 0 and height < 9:
        break

for i in range(1, height + 1):
    print( " " * (height - i), "#" * i, sep="")

您可以使用 f-strings:

for i in range(1, height + 1):
    print(f"{'#'*i: >{height}}")

输出:

Height: 4
   #
  ##
 ###
####

如果您不想要“#”前的空格 把代码写成这样

import cs50

while True:
    height = cs50.get_int("Height: ")
    if height > 0 and height < 9:
        break

for i in range(1, height + 1):
    print("#" * i)