试图在Python中构建符号三角形

时间:2017-04-23 21:42:04

标签: python

所以我的教授试图让我们在一个函数中编写一个函数来打印一个不同符号的三角形,如下所示:

&安培;

&安培;

&安培;&安培;

%%

%%%

@

@@

@@@

@@@@

我可以编写三角函数并以该格式打印,但是我很难在精神上跳过附加变量符号元素。简而言之,我可以打印出合适的形状,但不能使用不同的符号。这是我到目前为止所做的:

s = "&"
def stars(i):
    '''Prints n number of stars'''
    print(i*s)

def triangle_of_symbols(s, n):
    '''Creates symbol triangle function with variable n.'''
    for i in range (n):
        stars(i+1)

triangle_of_symbols(s, 1)

triangle_of_symbols(s, 2)

triangle_of_symbols(s, 3)

triangle_of_symbols(s, 4)

我将如何做到这一点?即使被指向正确的方向,现在也会非常有用。

2 个答案:

答案 0 :(得分:4)

您的stars函数当前需要i,即要打印的星数,然后从全局变量s中提取要打印的符号。

相反,在s中参数化stars,这样您就可以告诉函数在每次调用时打印哪个符号。

def starts(i, s):
    print(s * i)  # I think that order scans better -- "s, i times". YMMV

然后在triangle_of_symbols传递s以及i+1

...
for i in range(n):
    stars(i+1, s)

虽然真的没有理由把这两个功能分开。

def triangle_of_stars(s, n):
    for i in range(n):
        print(s * i+1)

答案 1 :(得分:2)

您也可以将符号放在字典中。

shapes = {"stars": "*", "at": "@"}


def generate_triangle(shape_key, lines):
    for i in range(lines):
        print (shapes[shape_key] * (i+1))


generate_triangle('at', 4)
generate_triangle('stars', 4)