在循环中使用 end= 参数(Python)

我想要的输出是由两个空格分隔的两个半金字塔。


length = int(input("Enter size of pyramid."))

hashes = 2

for i in range(0, length):

    spaces = length - (i+1)

    hashes = 2+i

    print("", end=" "*spaces)

    print("#", end=" "*hashes)

    print("  ", end="")

    print("#" * hashes)

但是,这最终只会打印左侧金字塔上每行的第一个哈希值。如果我去掉end=第 7 行,金字塔都会正确打印,但每行后都有换行符。以下是输出:


随着结束=:


   #    ##

  #     ###

 #      ####

#       #####

没有尽头=:


   ##

  ##

  ###

  ###

 ####

  ####

#####

  #####

我现在想要的只是有第二个输出,但没有换行符。


aluckdog
浏览 254回答 3
3回答

胡子哥哥

在没有换行符的情况下打印您想要的任何输出的最直接方法是使用sys.stdout.write. 这会向 写入一个字符串stdout而不附加新行。>>> import sys>>> sys.stdout.write("foo")foo>>> sys.stdout.flush()>>> 正如你在上面看到的,"foo"没有换行符。

芜湖不芜

试试这个算法:length = int(input("Enter size of pyramid."))# Build left side, then rotate and print all in one linefor i in range(0, length):    spaces = [" "] * (length - i - 1)    hashes = ["#"] * (1 + i)    builder = spaces + hashes + [" "]    line = ''.join(builder) + ''.join(builder[::-1])    print(line)

慕田峪9158850

您将end参数乘以哈希数,而不是乘以正文部分。试试这个修改:length = int(input("Enter size of pyramid."))hashes = 2for i in range(0, length):    spaces = length - (i+1)    hashes = 2+i    print(" " * spaces, end="")    print("#" * hashes, end="")    print("  ", end="")    print("#" * hashes)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python