为了账号安全,请及时绑定邮箱和手机立即绑定

如何在不使用嵌套循环的情况下显示乘法表?

如何在不使用嵌套循环的情况下显示乘法表?

慕森卡 2023-10-11 16:11:06
for i in range(1,11,1):  for j in range(1,11,1):    print(i*j, end="\t")  print()输出1   2   3   4   5   6   7   8   9   102   4   6   8   10  12  14  16  18  203   6   9   12  15  18  21  24  27  304   8   12  16  20  24  28  32  36  405   10  15  20  25  30  35  40  45  506   12  18  24  30  36  42  48  54  607   14  21  28  35  42  49  56  63  708   16  24  32  40  48  56  64  72  809   18  27  36  45  54  63  72  81  9010  20  30  40  50  60  70  80  90  100是否可以在不使用嵌套循环的情况下显示这个乘法表?如果是,怎么办?我的意思是,我只想使用一个循环。
查看完整描述

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()


查看完整回答
反对 回复 2023-10-11
?
冉冉说

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) 的乘积。


不过,最简单的解决方案是像您已经拥有的那样使用两个循环。


查看完整回答
反对 回复 2023-10-11
?
慕沐林林

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


查看完整回答
反对 回复 2023-10-11
  • 3 回答
  • 0 关注
  • 84 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信