当字符串乘以任意数字时 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)
当我使用 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)