尝试在Python中格式化乘法表

时间:2016-02-26 03:23:07

标签: python multiplication

好的,我正在为我的Python课程完成作业。教授希望我使用%格式说明符制作乘法表。

x = 0
y = 0

for y in range(1, 11):
    for z in range(1, 11):
        print("%10i" %(y*z))

我知道格式说明符是错误的,但是如何使用代码中的格式类型使其看起来像乘法表?

我希望它看起来像:

1 2 3  4  5  6  7  8  9 10
2 4 6  8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
. . .
10 20 30 40 50 60 70 80 90 100

谢谢大家。

4 个答案:

答案 0 :(得分:5)

for y in range(1, 11):
    for z in range(1, 11):
        print(" %3i" %(y*z), end="")
    print("")

您不需要初始化变量,因为for会这样做。

%3i对于此表中的所有值都足够宽; %10i会使表格变得非常宽。

end=""阻止在打印每个数字后添加换行符,因此y的相同值的所有数字都将打印在同一行。然后print("")在行的末尾添加换行符。

DEMO

答案 1 :(得分:1)

如果您使用列表推导,我认为您的任务会更容易。或者将z移到print语句中:

for y in range(1, 11):
    print("%10i"*10 % tuple(z*y for z in range(1, 11)))

但是,您可以构建输出字符串:

for y in range(1, 11):
    out = ""
    for z in range(1, 11):
         out += "%10i" % y*z
    print (out)

答案 2 :(得分:1)

你快到了!
首先,您不需要xy个变量。你们两个循环都可以。其次,由于您要打印的最大数字是100,因此您需要打印每个至少三个字符的数字(使用"%3d")。第三,为防止打印在单独的行上写下每个数字,最后加一个逗号。您必须在内循环后插入另一个print来更改行。

for y in range(1, 11):
  for z in range(1, 11):
    print("%3d" %(y*z)),
  print ("")

我的回答是假设python2。对于python3,打印后的逗号不会阻止换行,而是使用print("%4d" %(y*z), end="")。并将宽度增加到四个字符。

答案 3 :(得分:0)

试试这个



import org.apache.commons.io.IOUtils
class MockServletInputStream extends ServletInputStream {
    InputStream inputStream

    MockServletInputStream(String string) {
        this.inputStream = IOUtils.toInputStream(string)
    }

    @Override
    int read() throws IOException {
        return inputStream.read()
    }
}




相关问题