好的,我正在为我的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
谢谢大家。
答案 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("")
在行的末尾添加换行符。
答案 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)
你快到了!
首先,您不需要x
和y
个变量。你们两个循环都可以。其次,由于您要打印的最大数字是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()
}
}