Python和CodeEval:为什么不&x27;我对这个乘法表挑战的解决方案不正确吗?

Python和CodeEval:为什么不&x27;我对这个乘法表挑战的解决方案不正确吗?,python,formatting,multiplication,Python,Formatting,Multiplication,所以在过去的几天里,我一直在深入研究CodeEval面临的一些挑战。其中一个要求你打印一个漂亮的乘法表,直到12*12。虽然在我的计算机上此解决方案工作正常,但该网站不接受它 有人能帮我吗 for i in range(1,13): for j in range(1,13): if j==1: print i*j, elif i>=10 and j==2: print '{0:3}'.format(i*j),

所以在过去的几天里,我一直在深入研究CodeEval面临的一些挑战。其中一个要求你打印一个漂亮的乘法表,直到12*12。虽然在我的计算机上此解决方案工作正常,但该网站不接受它

有人能帮我吗

for i in range(1,13):
    for j in range(1,13):
       if j==1:
        print i*j,
       elif i>=10 and j==2:
        print '{0:3}'.format(i*j),
       else:
        print '{0:4}'.format(i*j),
    print 
以下是对挑战的描述:

以类似矩阵的方式打印表格,每个数字的格式为4(数字右对齐,并在每行去掉前导/尾随空格)

以类似矩阵的方式打印表格,每个数字的格式为4(数字右对齐,并在每行去掉前导/尾随空格)

然而,输出不能满足这一要求,正时条使输出更为明显

1    2    3    4    5    6    7    8    9   10   11   12^N
2    4    6    8   10   12   14   16   18   20   22   24^N
3    6    9   12   15   18   21   24   27   30   33   36^N
||||----||||----||||----||||----||||----||||----||||----
“宽度为4,右对齐”的正确填充应该如下所示

   1   2   3   4   5   6   7   8   9  10  11  12^N
||||++++||||++++||||++++||||++++||||++++||||++++
然后用“去掉每行的前导/尾随空格”得到正确的结果

1   2   3   4   5   6   7   8   9  10  11  12^N
|++++||||++++||||++++||||++++||||++++||||++++
虽然电流输出不正确,但具有正确输出的计时条

1    2    3    4    5    6    7    8    9   10   11   12^N
|++++||||++++||||++++||||++++||||++++||||++++???????????
以类似矩阵的方式打印表格,每个数字的格式为4(数字右对齐,并在每行去掉前导/尾随空格)

然而,输出不能满足这一要求,正时条使输出更为明显

1    2    3    4    5    6    7    8    9   10   11   12^N
2    4    6    8   10   12   14   16   18   20   22   24^N
3    6    9   12   15   18   21   24   27   30   33   36^N
||||----||||----||||----||||----||||----||||----||||----
“宽度为4,右对齐”的正确填充应该如下所示

   1   2   3   4   5   6   7   8   9  10  11  12^N
||||++++||||++++||||++++||||++++||||++++||||++++
然后用“去掉每行的前导/尾随空格”得到正确的结果

1   2   3   4   5   6   7   8   9  10  11  12^N
|++++||||++++||||++++||||++++||||++++||||++++
虽然电流输出不正确,但具有正确输出的计时条

1    2    3    4    5    6    7    8    9   10   11   12^N
|++++||||++++||||++++||||++++||||++++||||++++???????????
以类似矩阵的方式打印表格,每个数字的格式为4(数字右对齐,并在每行去掉前导/尾随空格)

然而,输出不能满足这一要求,正时条使输出更为明显

1    2    3    4    5    6    7    8    9   10   11   12^N
2    4    6    8   10   12   14   16   18   20   22   24^N
3    6    9   12   15   18   21   24   27   30   33   36^N
||||----||||----||||----||||----||||----||||----||||----
“宽度为4,右对齐”的正确填充应该如下所示

   1   2   3   4   5   6   7   8   9  10  11  12^N
||||++++||||++++||||++++||||++++||||++++||||++++
然后用“去掉每行的前导/尾随空格”得到正确的结果

1   2   3   4   5   6   7   8   9  10  11  12^N
|++++||||++++||||++++||||++++||||++++||||++++
虽然电流输出不正确,但具有正确输出的计时条

1    2    3    4    5    6    7    8    9   10   11   12^N
|++++||||++++||||++++||||++++||||++++||||++++???????????
以类似矩阵的方式打印表格,每个数字的格式为4(数字右对齐,并在每行去掉前导/尾随空格)

然而,输出不能满足这一要求,正时条使输出更为明显

1    2    3    4    5    6    7    8    9   10   11   12^N
2    4    6    8   10   12   14   16   18   20   22   24^N
3    6    9   12   15   18   21   24   27   30   33   36^N
||||----||||----||||----||||----||||----||||----||||----
“宽度为4,右对齐”的正确填充应该如下所示

   1   2   3   4   5   6   7   8   9  10  11  12^N
||||++++||||++++||||++++||||++++||||++++||||++++
然后用“去掉每行的前导/尾随空格”得到正确的结果

1   2   3   4   5   6   7   8   9  10  11  12^N
|++++||||++++||||++++||||++++||||++++||||++++
虽然电流输出不正确,但具有正确输出的计时条

1    2    3    4    5    6    7    8    9   10   11   12^N
|++++||||++++||||++++||||++++||||++++||||++++???????????
以类似矩阵的方式打印表格,每个数字的格式为4 (数字右对齐,并去掉每行的前导/尾随空格)

我认为根据给定的规则,以下代码可能会通过。但这只是猜测 因为我不是在玩codeeval

# python3 code, use from __future__ import print_function if you're using python2
for i in range(1,13):
    for j in range(1,13):
        print('{:4}'.format(i*j), end="")
    print ("")
我想你的问题是你有一个5对齐,因为你忘记了
printfoo,
python 2中的语法添加了一个空格。他们还说宽度为4,而你试图变得聪明 根据值的大小进行相应的对齐

编辑:下面是关于代码中错误的更多详细信息,让我们看两行输出:

1    2    3    4    5    6    7    8    9   10   11   12
10  20   30   40   50   60   70   80   90  100  110  120
AA␣BBB␣CCCC␣CCCC␣CCCC␣CCCC␣CCCC␣CCCC␣CCCC␣CCCC␣CCCC␣CCCC␣
因此,您的代码所做的是:

if j==1: print i*j,
输出
AA␣,

elif i>=10 and j==2:
    print '{0:3}'.format(i*j),
输出
BBB␣

else:
    print '{0:4}'.format(i*j),
输出
CCCC␣

是python添加的额外空间,因为在打印结束时使用了
,要获得该空间,请参见该代码段:

>>> def foo():
...  print 1234,
...  print 1234,
...  print
... 
>>> foo()
1234 1234
格式
'{0:3}'
按预期将整数向右对齐,但只使用三个填充,而
'{0:4}'
则根据规则进行对齐。但是当你在结尾添加一个额外的空间时,它在你写的时候就不起作用了。这就是为什么最好使用python3的print表达式,使用
end
关键字使其更简单

以类似矩阵的方式打印表格,每个数字的格式为4 (数字右对齐,并去掉每行的前导/尾随空格)

我认为根据给定的规则,以下代码可能会通过。但这只是猜测 因为我不是在玩codeeval

# python3 code, use from __future__ import print_function if you're using python2
for i in range(1,13):
    for j in range(1,13):
        print('{:4}'.format(i*j), end="")
    print ("")
我想你的问题是你有一个5对齐,因为你忘记了
printfoo,
python 2中的语法添加了一个空格。他们还说宽度为4,而你试图变得聪明 根据值的大小进行相应的对齐

编辑:下面是关于代码中错误的更多详细信息,让我们看两行输出:

1    2    3    4    5    6    7    8    9   10   11   12
10  20   30   40   50   60   70   80   90  100  110  120
AA␣BBB␣CCCC␣CCCC␣CCCC␣CCCC␣CCCC␣CCCC␣CCCC␣CCCC␣CCCC␣CCCC␣
因此,您的代码所做的是:

if j==1: print i*j,
输出
AA␣,

elif i>=10 and j==2:
    print '{0:3}'.format(i*j),
输出
BBB␣

else:
    print '{0:4}'.format(i*j),
输出
CCCC␣

是python添加的额外空间,因为在打印结束时使用了
,要获得该空间,请参见该代码段:

>>> def foo():
...  print 1234,
...  print 1234,
...  print
... 
>>> foo()
1234 1234
格式
'{0:3}'
按预期将整数向右对齐,但只使用三个填充,而
'{0:4}'
则根据规则进行对齐。但是当你在结尾添加一个额外的空间时,它在你写的时候就不起作用了。这就是为什么最好使用python3的print表达式,使用
end
关键字使其更简单

以类似矩阵的方式打印表格,每个数字的格式为4 (数字右对齐,并去掉每行的前导/尾随空格)

我认为根据给定的规则,以下代码可能会通过。但这只是猜测 因为我不是在玩codeeval

# python3 code, use from __future__ import print_function if you're using python2
for i in range(1,13):
    for j in range(1,13):
        print('{:4}'.format(i*j), end="")
    print ("")
我想你的问题是你有一个5对齐,因为你忘记了
printfoo,
python中的语法