Python和CodeEval:为什么不&x27;我对这个乘法表挑战的解决方案不正确吗?
所以在过去的几天里,我一直在深入研究CodeEval面临的一些挑战。其中一个要求你打印一个漂亮的乘法表,直到12*12。虽然在我的计算机上此解决方案工作正常,但该网站不接受它 有人能帮我吗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),
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中的语法