![](/img/trans.png)
[英]I have written one code in python 2 now i want to execute this in python3, i am getting error
[英]In Python, i want to print concentric square for that i have written a code but i am not getting desired output
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.