Сделайте перевернутый узор с вложенными петлями - PullRequest
0 голосов
/ 29 сентября 2019

Мне нужно сделать шаблон с функцией, которая, учитывая целое число (n), распечатает конкретный шаблон размером n. Например, размер 4 должен выглядеть следующим образом:

!!!!!!!!!!!!!!
\\!!!!!!!!!!//
\\\\!!!!!!////
\\\\\\!!//////

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

def slashFigure():
    width = int(input("Enter a number: "))
    for i in range(0, width):
        for j in range(0, width - i):
            print("\\", end="")
        for k in range (0, 2*i + 1):
            print("!!", end="")
        print("/")

slashFigure()

Ответы [ 3 ]

0 голосов
/ 29 сентября 2019

у меня работает следующее

num = int(input("Enter a number: "))
length = 4 * (num - 1) + 2
exclamation = 2
lines = []
for line in range(num):
    slashes = (length - exclamation) // 2
    lines.append('\\' * slashes + '!' * exclamation + '/' * slashes)
    exclamation += 4

lines.reverse()
for print_line in lines:
    print(print_line)
0 голосов
/ 29 сентября 2019

Вы можете сделать:

def slashFigure(height, reverse):

    for row in range(height)[::(1-int(reverse)*2)]:
        print(''.join(['\\' for x in range(row*2)]+['!' for x in range(height*4-row*4-2)]+['/' for x in range(row*2)]))

height = int(input("Enter a number: "))
slashFigure(height, False)
slashFigure(height, True)
0 голосов
/ 29 сентября 2019

Попробуйте:

def slashFigure():
    width = int(input("Enter a number: "))
    for i in range(width):
        print('\\'*(2*i)+ '!'*(width*4-i*4-2)+'/'*(2*i))

slashFigure()

Вывод :

Enter a number: 4
!!!!!!!!!!!!!!
\\!!!!!!!!!!//
\\\\!!!!!!////
\\\\\\!!//////
...