shape1 = [12*'-' for i in range(5)] # segments of rectangle
shape2 = [i*'*' + (5-i)*' ' for i in range(1,5+1)] # segments of 1st triangle
shape3 = [(5-i)*' ' + i*'*' for i in range(1,5+1)] # segments of 2nd triangle
for line in zip(shape1, shape2, shape3):
print(" ".join(line))
РЕДАКТИРОВАТЬ: подробная версия, как требуется (но у меня нет Python 3 здесь; следующий код работает в Python 2.x, так что вам придется немного переделать инструкции печати):
for line in range(1, 5+1): # for each line
for c in range (12): # print a bit of the first shape
print '-',
print " ",
for c in range (line) : # a bit of the second
print '*',
for c in range (5-line):
print ' ',
print " ",
for c in range (5+1-line): # and a bit of the third
print '*',
#for c in range (line):
# print ' ',
print