我尝试打印的图案倒置

问题描述

好吧,我知道这是超级基本的知识,我可能应该知道我在这里做什么,但是我一直想尝试翻转这个悬挂三角形。我一直对需要交换的变量感到困惑。 这个三角形从单个星开始,向下迭代形成一个完整的三角形。我需要它开始做大,然后努力成为一颗星星。有点像漏斗。请,谢谢,再请一次。

这是代码

def up_arrow(arrow):
    char = arrow
    index = 0
    size = 6
    while index < size:
        spaces = " " * (6 - index)
        print(spaces + char)
        char += arrow * 2
        index += 1

解决方法

在循环中,您将index继续增加1,直到达到6,并用两个char继续增加arrow的长度,以使其结束于6 * 2-1 arrows秒。那么,您是否尝试过扭转这种情况?

从字符串size * 2-1 arrow开始,将index设置为size,每次迭代递减index,直到您将达到0,并且每次都从char中删除两个字符:

def down_arrow(arrow):
    size = 6
    index = size
    char = arrow * (size * 2 - 1)
    while index > 0:
        spaces = " " * (6 - index)
        print(spaces + char)
        char = char[2:]
        index -= 1


down_arrow('.')

请注意,我尝试过按照您最初编写的方式进行操作,因此有更多最佳方法。

例如,尽管仍只打印这种类型的箭头,但此功能可以同时执行以下操作:

def arrow(ch,size,up=True):
    for i in range(1,size + 1) if up else range(size,-1):
        print(' ' * (size - i) + ch * (2 * i - 1))


arrow('.',6)
arrow('.',6,up=False)