为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

aluckdog 2021-07-20 17:01:04
我想要的输出是由两个空格分隔的两个半金字塔。length = int(input("Enter size of pyramid."))hashes = 2for i in range(0, length):    spaces = length - (i+1)    hashes = 2+i    print("", end=" "*spaces)    print("#", end=" "*hashes)    print("  ", end="")    print("#" * hashes)但是,这最终只会打印左侧金字塔上每行的第一个哈希值。如果我去掉end=第 7 行,金字塔都会正确打印,但每行后都有换行符。以下是输出:随着结束=:   #    ##  #     ### #      #####       #####没有尽头=:   ##  ##  ###  ### ####  #########  #####我现在想要的只是有第二个输出,但没有换行符。
查看完整描述

3 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

在没有换行符的情况下打印您想要的任何输出的最直接方法是使用sys.stdout.write. 这会向 写入一个字符串stdout而不附加新行。


>>> import sys

>>> sys.stdout.write("foo")

foo>>> sys.stdout.flush()

>>> 

正如你在上面看到的,"foo"没有换行符。


查看完整回答
反对 回复 2021-07-28
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

试试这个算法:


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

# Build left side, then rotate and print all in one line

for i in range(0, length):

    spaces = [" "] * (length - i - 1)

    hashes = ["#"] * (1 + i)

    builder = spaces + hashes + [" "]

    line = ''.join(builder) + ''.join(builder[::-1])

    print(line)


查看完整回答
反对 回复 2021-07-28
?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

您将end参数乘以哈希数,而不是乘以正文部分。


试试这个修改:


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

hashes = 2

for i in range(0, length):

    spaces = length - (i+1)

    hashes = 2+i

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

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

    print("  ", end="")

    print("#" * hashes)


查看完整回答
反对 回复 2021-07-28
  • 3 回答
  • 0 关注
  • 243 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信