如何在 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)
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)