尝试在 Python 中格式化乘法 table

Trying to format multiplication table in Python

好的,我正在为我的 Python class 做作业。教授要我使用 % 格式说明符进行乘法运算 table。

x = 0
y = 0

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

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

我希望它看起来像:

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

谢谢大家。

试试这个

x = 0
y = 0
s="";

for y in range(1, 11):
    for z in range(1, 11):
        s=s+"  "+str(y*z)
    s=s+"\n"
  
print(s);

我认为如果您使用列表理解,您的任务会更容易。或者将 z 移动到打印语句中:

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)
for y in range(1, 11):
    for z in range(1, 11):
        print(" %3i" %(y*z), end="")
    print("")

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

%3i 足以容纳此 table 中的所有值; %10i 将使 table 非常宽。

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

DEMO

你快到了!
首先,您不需要 xy 变量。你们两个循环都可以。其次,由于您要打印的最大数字是 100,因此您需要打印每个数字至少三个字符长(为此使用 "%3d")。第三,为了防止 print 将每个数字写在单独的行上,在末尾放一个逗号。您将必须插入另一个 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="")。并将宽度增加到四个字符。