[我刚开始使用Python 3打印模式时。但是我对此代码感到困惑有人可以为我更正此代码,因为我感到困惑,这是我的任务
n = int(input('\n Enter Your Value of N : '))
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)
此代码用于生成这样的输出:
INPUT : 5
OUTPUT :
555555555
544444445
543333345
543222345
543212345
543222345
543333345
544444445
555555555
任何人都可以纠正并向我解释此代码
及其生成的输出,像这样
Enter Your Value of N : 5
[2, 2, 2, 2, 2]
[2, 1, 2]
[2, 2, 2, 2, 2]
[3, 3, 3, 3, 3, 3, 3]
[3, 3, 2, 2, 2, 2, 2, 3, 3]
[3, 2, 1, 2, 3]
[3, 3, 2, 2, 2, 2, 2, 3, 3]
[3, 3, 3, 3, 3, 3, 3]
[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]
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5]
[5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5]
[5, 5, 4, 4, 3, 3, 3, 3, 3, 3, 3, 4, 4, 5, 5]
[5, 5, 4, 4, 3, 3, 2, 2, 2, 2, 2, 3, 3, 4, 4, 5, 5]
[5, 4, 3, 2, 1, 2, 3, 4, 5]
[5, 5, 4, 4, 3, 3, 2, 2, 2, 2, 2, 3, 3, 4, 4, 5, 5]
[5, 5, 4, 4, 3, 3, 3, 3, 3, 3, 3, 4, 4, 5, 5]
[5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5]
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5]
请为我更正
我将尽力不只是给您代码,而是解释一下以使您朝正确的方向前进。首先,您立即知道第一行,对吗?它是输入数字的2*n-1
倍。因此,您可以立即设置列表。看看this例如如何在python中初始化列表。现在您有了列表,您必须在每次迭代中更改内部部分。如果要遍历i in range(1,n)
,则最里面的部分始终对应于2*i-1
条目,或者以正确的方式遍历2*(n-i)-1
条目。因此,对于第二行(插入4s),您必须准确地插入n-i
次2*(n-i)-1
次。证明:n=5, i=1 => n-i = 4
和2*(n-i)-1 = 2*4-1 = 7
。现在,您要将其放入列表。对于如何执行此操作,您可以查看片式符号,该符号进行了精美的说明here。如果操作正确,则只需几行代码即可完成。
希望这对您的作业有所帮助。