繁体   English   中英

在 Python 中,我想打印同心正方形,因为我已经编写了代码,但我没有得到想要的 output

[英]In Python, i want to print concentric square for that i have written a code but i am not getting desired output

在此处输入 n

n=int(input())

answer=[[1]]

for i in range(2, n+1):

    t=[i]*((2*i)-3)
    answer.insert(0, t)
    answer.append(t)
    for a in answer:
    a.insert(0,i)
    a.append(i)

answerfinal=[]

for a in answer:

    answerfinal.append("".join(str(a)))

for a in answerfinal:
    
    print(a)

Output:

4
[4, 4, 4, 4, 4, 4, 4, 4, 4]

[4, 4, 3, 3, 3, 3, 3, 3, 3, 4, 4]

[4, 4, 3, 3, 2, 2, 2, 2, 2, 3, 3, 4, 4]

[4, 3, 2, 1, 2, 3, 4]

[4, 4, 3, 3, 2, 2, 2, 2, 2, 3, 3, 4, 4]

[4, 4, 3, 3, 3, 3, 3, 3, 3, 4, 4]

[4, 4, 4, 4, 4, 4, 4, 4, 4]

所需的 output:

4444444

4333334

4322234

4321234

4322234

4333334

4444444

您的逻辑似乎不正确,并且您的代码中也有一些不好的缩进。

要正确打印 output 而不是列表,您可以执行以下操作:

for a in answerfinal:
    for i in a:
        print(i, end='')
    print()

您可以将逗号和空格替换为空,然后排除括号:

for a in answerfinal:
    print(a.replace(', ', '')[1:-1])

完整代码如下:

n=int(input())

answer=[[1]]

for i in range(2, n+1):
    t=[i]*((2*i)-3)
    answer.insert(0, t)
    answer.append(t)
    for a in answer:
        a.insert(0,i)
        a.append(i)
answerfinal=[]

for a in answer:
    answerfinal.append("".join(str(a)))

for a in answerfinal:
    print(a.replace(', ', '')[1:-1])

这是使用正确算法和 output 解决问题的方法:

n = int(input())

answer = []
k = 0
for i in range(n):
    temp = [(n-k) for _ in range(2*n - 1)]
    side = [x for x in range(n, n-k, -1)]
    answer.append(side + temp[k:len(temp) - k] + side[::-1])
    k += 1

k = 2
for i in range(n-1):
    answer.append(answer[n-k])
    k += 1

for a in answer:
    print(''.join(map(str, a)), end='\n\n')

使用

for i in range(2*n-1):
    print()
    for j in range(len(answerfinal[i])):
        print(answerfinal[i][j], end='')

代替

for a in answerfinal:
    print(a)

可能有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM