如何在 python 中制作正方形

how to make a square in python

k=int(input('n:'))
def square(n):
    lines = ['*' * (n - i) + " " * i for i in range(n)]
    for l in lines + lines[-2::-1]:
        print(l + l[::-1])
square(k)

我正在制作一个打印带有星号的正方形的代码。如果我把 2 放在 n 中,正方形必须是 3x3 正方形,但它打印出 4x3 正方形。如果我把 4 放在 n 中,则必须有一个 7x7 的正方形,但它打印出 8x7 的正方形。中间的空白正方形每边必须有 n 个星星。我必须更改哪里才能解决此问题?

顶线和底线需要一个特例,少一颗星。

(这是因为如果你看这个图案,它几乎就像中心的星星有两个重叠的星星,这就减少了一颗可见的星星)

我会这样写:

def print_line(n, i, gap):
    if i == 0:
        print('*' * (2*n-1))
    else:
        print('*' * (n-i) + ' ' * (gap-1) + '*' * (n-i))

def square(n):
    gap = 0
    for i in range(n):
        print_line(n, i, gap)
        gap += 2

    gap = 2*n - 4
    for i in reversed(range(n-1)):
        print_line(n, i, gap)
        gap -= 2


square(10)