Python空心菱形图案程序优化

时间:2019-01-08 06:24:30

标签: python python-3.x optimization

我一直在探索Python,并正在制作一个程序来生成空心菱形图案,如下所示:

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

这是它的代码。我想知道还有哪些其他更好的方法可以降低复杂度(意味着减少循环次数)

n = int(input("Enter Size of Pattern: "))
#Upper Traingles
for i in range(n, 0, -1):
    #Top Left Triangle
    for j in range(1, i+1): 
        print("*", end =" ")

    #Space between top triangles
    for j in range(n-i):
        print(" ",end=" ")

    #Top Right Triangle
    for j in range(n, 0, -1):
        if(i < j):
            print(" ",end=" ")
        else:
            print("*", end =" ") 

    print("\n", end="")

#Bottom Triangles    
for i in range(-1, n-1):
    #Bottom Left Triangle
    for j in range(-1, i+1): 
        print("*", end =" ")

    #Space between Bottom Triangles
    for j in range((n-2)-i):
        print(" ",end=" ")

    #Bottom Right Triangle
    for j in range(-1, n-1):
        if(j < (n-3)-i):
            print(" ",end=" ")
        else:
            print("*", end =" ") 

    print("\n", end="")

我是python的新手,所以这个问题有点天真。帮助我减少此代码的复杂性。

我也看到过很少的程序,但是根据该解决方案它们无法正常工作。

谢谢您的帮助

1 个答案:

答案 0 :(得分:0)

n = int(input("Enter pattern size: "))    

for i in range(n):
    print((n-i) * '* ' + (2*i) * ' ' + (2*i) * ' ' + (n-i) * '* ' )
for i in range(n-1, -1, -1):
    print((n-i) * '* ' + (2*i) * ' ' + (2*i) * ' ' + (n-i) * '* ')

输出:

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