2015-03-08 4 views
0

с редактором Python Я пытаюсь воссоздать эту специфическую картину линии над здесь:Создание паттерна с Python

666666 
6 6 
6 6 
6 6 
66 
6 

Это код, который я создал:

steps=6 
for s in range(steps): 
    print('6' + (' ' * r) + '6') 

Однако вывод, что Я получаю вместо этого:

66 
6 6 
6 6 
6 6 
6 6 
6  6 

Таким образом, как вы видите, это почти делает противоположную операцию тому, что я хочу d в верхнем выводе выше. Если есть способ обратить вспять этот вывод, мне нужно, чтобы я хотел поделиться им.

+1

Подумайте о том, сколько пространства вам нужно напечатать на первой линии, а затем на второй, и т.д. Отношения обратная текущего количества, относительно «шагов» .. –

+0

Другими словами, если '' '' '1', сколько пробелов вам нужно для печати между ними? –

+0

Разве вы не говорите '' 'вместо' r'? –

ответ

-1

Начнем с построения в возрастающем порядке, то есть как диаграмма ниже

6 
66 
6 6 
6 6 
66666 

Существует ряд к число пробелов, зависящих от высоты = 1, то есть с высоты = 2, число пробелов имеет ряд 0,1,2 и т. д. Поэтому, если высота равна n, серия начинается с 2, где пространство = 0 и заканчивается на n - 1, где количество пространств равно n - 3, а при высоте = n число 6s равно n - 2.

Код для этого будет

def print6(height): 
...  print 6 
...  for s in range(0, height - 2): 
...    print str(6) + ' '*s + str(6) 
...  print str(6)*2+str(6)*(height-2) 

Чтобы изменить это

def print6(height): 
...  print str(6)*2+str(6)*(height-2) 
...  for s in range(0, height - 2): 
...    print str(6) + ' '*(height-3-s) + str(6) 
...  print 6 
0

Вы можете использовать встроенную функцию reversed, которая возвращает итератор, проходящий через диапазон в обратном порядке.

steps=6 
for r in reversed(range(steps)): 
    print('#' + (' ' * r) + '#') 

Или вы можете использовать список сплайсинг в отвороты списка следующим образом:

steps=6 
for r in range(steps)[::-1]: 
    print('#' + (' ' * r) + '#') 
+0

Я пробовал этот код, он дает вам результат противоположного вывода, который мне нужен выше – Giovanni

0

Помимо комментария Мартейн на рассмотрение какого рода шаблон вы должны следовать, т.е. как количество пробелов развивается от одна строка к другой, вы можете посмотреть документацию по команде range по адресу PythonDocs on range(). В настоящее время вы только предоставляет один аргумент:

range(stop) 

Python будет использовать значения по умолчанию для остальных аргументов: start=0 и step=1. Однако вы можете предоставить их явно. «Шаг» аргумент, где вы можете положить в обратном подсчетом:

range(start, stop[, step]) 
+0

. Считаете ли вы, что значение диапазона для r в диапазоне (666666,6,6): будет иметь смысл в этом контексте, потому что я начинаю с 666666, а затем, в конечном счете, до конца, до тех пор, пока я не получу 6, а каждый раз снижаюсь на 6 каждый раз – Giovanni

+0

или для s в диапазоне (6, 1 [, 1]): может работать – Giovanni