CodeBlue04
CodeBlue04

Reputation: 51

Trying to build triangle of symbols in Python

So my professor is trying to get us to write a function within a function that prints a triangle of different symbols, like this:

&

&

&&

%

%%

%%%

@

@@

@@@

@@@@

I can write the triangle function and have it print in that format, but I'm having a difficult time making the mental leap to attach a variable symbol element. In short, I can print the proper shape, but not with different symbols. Here's what I have so far:

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)

How would I accomplish this? Even being pointed in the right direction would be enormously helpful right now.

Upvotes: 5

Views: 1638

Answers (2)

vonBerg
vonBerg

Reputation: 154

You can also put your symbols in a dictionary.

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)

Upvotes: 2

Adam Smith
Adam Smith

Reputation: 54203

Your stars function currently takes i, which is how many stars to print, and then pulls from the global variable s for what symbol to print.

Instead, parameterize s in stars so you can tell the function which symbol to print on each call.

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

Then in triangle_of_symbols pass s along with i+1.

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

though really there's little reason to separate the two functions.

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

Upvotes: 4

Related Questions