3 回答
TA贡献1842条经验 获得超21个赞
你可以循环100次,然后用除法和模数来确定你当前的行和列,然后计算相应的乘积。
for i in range(0, 100):
row = 1 + i // 10
col = 1 + i % 10
print(row * col, end="\t")
if col == 10:
print()
TA贡献1877条经验 获得超1个赞
您可以在没有任何显式循环甚至关键字的情况下执行此操作for。
>>> from operator import mul
>>> from functools import partial
>>>
>>> print("\n".join(map(lambda n: "".join(map("{:<3}".format, map(partial(mul, n), range(1,11)))), range(1,11))))
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
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100
但它仍然是 O(n^2)。不管你怎么写,你都需要计算并输出 O(n^2) 的乘积。
不过,最简单的解决方案是像您已经拥有的那样使用两个循环。
TA贡献2016条经验 获得超9个赞
如果其他函数可以为您执行嵌套循环,您可以使用itertools.product:
>>> from itertools import product
>>> for a, b in product(range(1, 11), repeat=2):
... print(a * b, end="\t")
... if b == 10:
... print()
...
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
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100
添加回答
举报