用嵌套的For循环制作一个倒置的图案

2024-10-06 12:15:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要用一个函数做一个模式,给定一个整数(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()

Tags: 函数代码infor模式range整数width
3条回答

以下是我的作品

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)

试试这个:

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
!!!!!!!!!!!!!!
\\!!!!!!!!!!//
\\\\!!!!!!////
\\\\\\!!//////

你可以做:

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)

相关问题 更多 >