首页 > 解决方案 > 如何使用 Python 打印此动态模式?

问题描述

要求用户输入一个大于或等于 5 (>=5) 的“奇数”数字,然后编写一段代码来显示一个使用星号划分为四个三角形的正方形。

请参阅下面的示例以了解模式的行为:例如,对于数字 5,模式是:

*****
** **
* * *
** **
*****

例如对于数字 9,模式是:

*********
**     **
* *   * *
*  * *  *
*   *   *
*  * *  *
* *   * *
**     **
*********

我尝试了许多代码组合但徒劳无功。我正在使用 Python 3.7.3 版本。


n = int(input("Please enter an odd number greater than or equal to 5: "))

while(n < 5 or n%2==0):
    print("Invalid")
    break

else:    
    for a in range(n):
        if(a==0 or a==n-1):

            print("*"*n,end='')
        else:

            i=1

            j=n-1

            for row in range(n-1):

                for col in range(n-1):

                    if(row==i and col==j):

                        print("*",end="")

                        i=i+1

                        j=j-1
                    elif row==col:
                        print("*",end="")
                    else:
                        print(end="")
                print()

我显然在这里做错了什么并且没有得到想要的输出

标签: pythonpython-3.xprinting

解决方案


你可以这样做:

n = int(input("Please enter an odd number greater than or equal to 5: "))
while(n < 5 or n%2==0):
  print("Invalid")
  n = int(input("Please enter an odd number greater than or equal to 5: "))

x = ['*'*n] + ['*'+' '*i+'*'+' '*(n-4-i*2)+'*'+' '*i+'*' for i in range(int((n-3)/2))]
print('\n'.join(x + ['*'+' '*int((n-3)/2)+'*'+' '*int((n-3)/2)+'*'] + x[::-1]))


推荐阅读