2014-09-05 8 views
1

В настоящее время я создал этот код в python. Результат - именно то, что я хочу. (Если вы знаете лучший способ получить это, я открыт для слушания). Я хочу знать, как я могу комбинировать треугольники и треугольники в одной основной функции. (Мой выход - боковая пирамида).Как объединить эти две функции в python

def triangle(n): 
    for x in range(n): 
     print ('*'*x) 
     n = n - 1 

def triangle2(n): 
    for x2 in range(n): 
     print ('*'*n) 
     n = n - 1 

height = int(input("Enter an odd number greater than 4: ")) 

triangle(height) 
triangle2(height) 

ответ

0
def triangle(n): 
    for x in range(n): 
     print ('*'*x) 
    for x in range(n): 
     print ('*'*n) 
     n -= 1 

height = int(input("Enter an odd number greater than 4: ")) 

triangle(height) 
+0

Первый цикл * не нужно изменять 'n' *; * здесь не используется *. Таким образом, вам не нужно создавать копию в 'tmp' * * *. –

+0

Хорошая точка. Я изменю это – Matt

+0

вот что я выбрал –

1

Просто поместите две петли вместе в одну функцию, но не изменяют n до второго цикла (первый не использовать его в любом случае):

def sideways_pyramid(n): 
    for x in range(n): 
     print('*' * x) 

    for x in range(n): 
     print('*' * n) 
     n = n - 1 

Вы можете избежать изменения n в целом путем подсчета вниз с range() вместо:

def sideways_pyramid(n): 
    for x in range(1, n): 
     print('*' * x) 

    for x in range(n, 0, -1): 
     print('*' * x) 

Второй цикл подсчитывает вниз, начиная с n и заканчивающийся в 1. Я также начать цикл первого на 1, чтобы не печатать пустую первую строку (0 раз '*' является пустой строкой)

Демонстрации:

>>> def sideways_pyramid(n): 
... for x in range(1, n): 
...   print ('*' * x) 
... for x in range(n, 0, -1): 
...   print ('*' * x) 
... 
>>> sideways_pyramid(5) 
* 
** 
*** 
**** 
***** 
**** 
*** 
** 
* 
0

К держите его как можно ближе к исходному коду:

def triangle2(n): 
     for x2 in range(n): 
      print ('*'*n) 
      n = n - 1  

def triangle(n): 
     for x in range(n): 
      print ('*'*x) 
     triangle2(n) 

height = int(input("Enter an odd number greater than 4: ")) 

triangle(height) 

Вы можете просто вызвать свою другую функцию с первой.

0

Если вы хотите всегда запускать их как в порядке, указанном в нижней части я хотел бы сделать что-то вроде этого:

def triangle(n): 
    for x in [y for y in range(n)] + [z for z in range(n, 0, -1)]: 
     print("*"*x) 


height = int(input("Enter an odd number greater than 4: ")) 

triangle(height) 
+0

благодаря этим работам –

Смежные вопросы