用python打印九九乘法表的20种方式!

下面是20种方法↓↓↓(文章末尾有分类)

目录

方法一:普通嵌套循环

方法二:使用字符串格式化和join方法

方法三:使用嵌套列表推导式

方法四:使用format方法

方法五:使用f-string和end参数

方法六:使用str.format和sep参数

方法七:使用列表推导式

方法八:使用while循环

方法九:使用嵌套列表和列表解析

方法十:使用itertools.product

方法十一:使用字符串乘法

方法十二:使用递归函数

方法十三:使用map函数和lambda表达式

方法十四:使用numpy数组

方法十五:使用pandas DataFrame

方法十六:使用exec函数

方法十七:使用字符串拼接

方法十八:使用模板字符串

方法十九:使用zip函数和星号解包

方法二十:使用内置函数reduce

总结:

附:分类:


方法一:普通嵌套循环

for i in range(1, 10):
    for j in range(1, i + 1):
        print(f"{j}*{i}={i*j}", end="\t")
    print()
  • 特点: 简单直观,易于理解和实现。

  • 优点: 效率较高,不需要额外的模块或复杂的语法。

  • 缺点: 代码量较多,不够简洁。

方法二:使用字符串格式化和join方法

for i in range(1, 10):
    print("\t".join(f"{j}*{i}={i*j}" for j in range(1, i+1)))
  • 特点: 使用了字符串的 join() 方法,使得代码更简洁。

  • 优点: 输出格式清晰,代码结构简单。

  • 缺点: 仍然需要嵌套循环,代码量略大。

方法三:使用嵌套列表推导式

[print("\t".join(f"{j}*{i}={i*j}" for j in range(1, i+1))) for i in range(1, 10)]
  • 特点: 使用了列表推导式,简洁而优雅。

  • 优点: 代码紧凑,结构清晰。

  • 缺点: 对于初学者可能不够易懂。

方法四:使用format方法

for i in range(1, 10):
    for j in range(1, i + 1):
        print('{}*{}={}'.format(j, i, i * j), end='\t')
    print()
  • 特点: 使用了字符串的 format() 方法,格式化输出。

  • 优点: 与方法一类似,直观易懂。

  • 缺点: 代码量较大,可读性稍差。

方法五:使用f-string和end参数

for i in range(1, 10):
    for j in range(1, i + 1):
        print(f"{j}*{i}={i*j}", end='\t')
    print()
  • 特点: 使用了 Python 3.6 新增的 f-string,简洁明了。

  • 优点: 代码简单,易读易懂。

  • 缺点: 对于不支持 Python 3.6 的环境可能不兼容。

方法六:使用str.format和sep参数

for i in range(1, 10):
    print(*["{}*{}={}".format(j, i, i*j) for j in range(1, i+1)], sep='\t')
  • 特点: 使用了 str.format() 方法和 sep 参数,输出格式化。

  • 优点: 结构清晰,可读性好。

  • 缺点: 代码量较大。

方法七:使用列表推导式

[print(*[f"{j}*{i}={i*j}" for j in range(1, i+1)], sep='\t') for i in range(1, 10)]
  • 特点: 结合了列表推导式和打印,简洁高效。

  • 优点: 代码紧凑,简单易懂。

  • 缺点: 可读性较差。

方法八:使用while循环

i = 1
while i < 10:
    j = 1
    while j <= i:
        print(f"{j}*{i}={i*j}", end="\t")
        j += 1
    print()
    i += 1
  • 特点: 使用了 while 循环,控制流程清晰。

  • 优点: 相比 for 循环,灵活性更高。

  • 缺点: 代码量较大。

方法九:使用嵌套列表和列表解析

[[print(f"{j}*{i}={i*j}", end="\t") for j in range(1, i+1)], print()] for i in range(1, 10)]
  • 特点: 利用了列表解析,使得代码更加简洁。

  • 优点: 结构清晰,代码简洁。

  • 缺点: 可读性较差,对于初学者可能不易理解。

方法十:使用itertools.product

import itertools
for i, j in itertools.product(range(1, 10), repeat=2):
    if j <= i:
        print(f"{j}*{i}={i*j}", end="\t")
    if j == i:
        print()
  • 特点: 使用了 itertools.product 函数,生成笛卡尔积。

  • 优点: 简洁高效,利用了 Python 的标准库。

  • 缺点: 可读性稍差,对于初学者可能不太熟悉 itertools 模块。

方法十一:使用字符串乘法

for i in range(1, 10):
    print('\t'.join(f"{j}*{i}={i*j}" for j in range(1, i+1)))
  • 特点: 使用了字符串乘法,构建乘法表行。

  • 优点: 简洁明了,无需额外的循环。

  • 缺点: 对于初学者可能不够直观。

方法十二:使用递归函数

def print_multiplication_table(n, i=1):
    if i > n:
        return
    print(*[f"{j}*{i}={i*j}" for j in range(1, i+1)], sep='\t')
    print_multiplication_table(n, i+1)

print_multiplication_table(9)
  • 特点: 使用了递归函数,简洁而巧妙。

  • 优点: 代码结构清晰,利用了递归特性。

  • 缺点: 可能会造成函数调用栈过深。

方法十三:使用map函数和lambda表达式

for i in range(1, 10):
    print(*map(lambda j: f"{j}*{i}={i*j}", range(1, i+1)), sep='\t')
  • 特点: 使用了 map 函数和 lambda 表达式,代码紧凑。

  • 优点: 简洁高效,结构清晰。

  • 缺点: 对于初学者可能不够直观。

方法十四:使用numpy数组

import numpy as np
table = np.fromfunction(lambda i, j: (j+1)*(i+1), (9, 9))
for i in range(9):
    print('\t'.join(f"{j+1}*{i+1}={table[i, j]}" for j in range(i+1)))
  • 特点: 使用了 NumPy 库,利用数组计算。

  • 优点: 高效,适用于大规模数据。

  • 缺点: 引入了外部库,可能需要额外安装。

方法十五:使用pandas DataFrame

import pandas as pd
df = pd.DataFrame([[f"{j}*{i}={i*j}" for j in range(1, i+1)] for i in range(1, 10)])
print(df.to_string(index=False, header=False))
  • 特点: 使用了 Pandas 库,输出为 DataFrame 格式。

  • 优点: 适用于数据分析,易于处理和可视化。

  • 缺点: 引入了外部库,可能需要额外安装。

方法十六:使用exec函数

for i in range(1, 10):
    exec(f"print({' + '.join([f'{j}*{i}={i*j}' for j in range(1, i+1)])})")
  • 特点: 使用了 exec 函数,动态执行字符串代码。

  • 优点: 灵活性高,可以动态生成代码。

  • 缺点: 安全性较差,容易引发安全问题。

方法十七:使用字符串拼接

for i in range(1, 10):
    row = ""
    for j in range(1, i+1):
        row += f"{j}*{i}={i*j}\t"
    print(row)
  • 特点: 使用了字符串拼接,构建乘法表行。

  • 优点: 简单直观,易于理解。

  • 缺点: 性能较差,不够高效。

方法十八:使用模板字符串

from string import Template
for i in range(1, 10):
    row = ""
    for j in range(1, i+1):
        row += Template("$j*$i=${result}\t").substitute(j=j, i=i, result=i*j)
    print(row)
  • 特点: 使用了模板字符串,格式化输出。

  • 优点: 可以更灵活地控制输出格式。

  • 缺点: 代码稍显繁琐,不够简洁。

方法十九:使用zip函数和星号解包

for i in range(1, 10):
    row = "\t".join(f"{j}*{i}={i*j}" for j in range(1, i+1))
    print(*row.split("\t"))
  • 特点: 使用了 zip 函数和星号解包,将字符串分隔符插入每一项。

  • 优点: 结构清晰,代码简洁。

  • 缺点: 对于不熟悉星号解包的人可能不够直观。

方法二十:使用内置函数reduce

from functools import reduce
for i in range(1, 10):
    print(reduce(lambda x, y: f"{x}\t{y}", [f"{j}*{i}={i*j}" for j in range(1, i+1)]))
  • 特点: 使用了内置函数 reduce,将每一行的乘法表项合并为一个字符串。

  • 优点: 结构清晰,简洁高效。

  • 缺点: 对于不熟悉 reduce 函数的人可能不够直观。

总结:

除方法十七外,所有方法的时间复杂度均为O(n^2),其中 n 为九九乘法表的边长,即 9

在打印九九乘法表这个具体问题上,无论使用何种方法,时间复杂度都是至少 O(n^2),其中 n 是九九乘法表的边长,即 9。因为无论如何,都需要打印 81 个乘法表达式。因此,从时间复杂度的角度来看,所有的方法都是相同的,没有明显的时间复杂度最小的方法。

方法十七的时间复杂度为O(n^3),其中 n 为九九乘法表的边长,由于字符串拼接会涉及到多次复制字符串的操作,因此时间复杂度较高。

在实际应用中,我们也可以考虑其他因素,比如代码的简洁性、可读性、执行效率等。一些方法可能在执行效率上稍微好一些,但是这些差异相对较小,不会对整体性能产生显著影响。因此,在选择方法时,应该综合考虑以上因素,选择最适合具体情况的方法。

附:分类:

  1. 基础循环方法:

    • 方法一:普通嵌套循环
    • 方法八:使用while循环
  2. 字符串格式化方法:

    • 方法二:使用字符串格式化和join方法
    • 方法四:使用format方法
    • 方法五:使用f-string和end参数
    • 方法六:使用str.format和sep参数
  3. 列表推导式方法:

    • 方法三:使用嵌套列表推导式
    • 方法七:使用列表推导式
  4. 其他Python特性方法:

    • 方法十一:使用字符串乘法
    • 方法十三:使用map函数和lambda表达式
    • 方法十七:使用字符串拼接
    • 方法十八:使用模板字符串
    • 方法十九:使用zip函数和星号解包
    • 方法二十:使用内置函数reduce
  5. 使用第三方库方法:

    • 方法十四:使用numpy数组
    • 方法十五:使用pandas DataFrame
  6. 高级方法:

    • 方法九:使用嵌套列表和列表解析
    • 方法十:使用itertools.product
    • 方法十二:使用递归函数
    • 方法十六:使用exec函数
  • 33
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 好的,以下是用 Python 打印九九乘法表的代码: ```python for i in range(1, 10): for j in range(1, i + 1): print('{}*{}={}'.format(i, j, i * j), end='\t') print() ``` 运行代码后,输出的结果就是九九乘法表。 ### 回答2: 九九乘法表是一个用于展示从1到9的九个整数相乘所得结果的表格。下面是使用Python编写的打印九九乘法表的程序: ```python for i in range(1, 10): for j in range(1, i+1): print(f"{j} x {i} = {i*j}\t", end="") print() ``` 这段代码使用两个嵌套的for循环来遍历1到9的两个乘数。外层循环控制被乘数,内层循环控制乘数,这样就可以获取到每一行的乘法表达式。使用`print()`函数打印每一个乘法表达式,并使用制表符`'\t'`进行分隔,使得乘法表以表格的形式展示出来。 运行上述代码,将会输出如下的九九乘法表: ``` 1 x 1 = 1 1 x 2 = 2 2 x 2 = 4 1 x 3 = 3 2 x 3 = 6 3 x 3 = 9 1 x 4 = 4 2 x 4 = 8 3 x 4 = 12 4 x 4 = 16 1 x 5 = 5 2 x 5 = 10 3 x 5 = 15 4 x 5 = 20 5 x 5 = 25 1 x 6 = 6 2 x 6 = 12 3 x 6 = 18 4 x 6 = 24 5 x 6 = 30 6 x 6 = 36 1 x 7 = 7 2 x 7 = 14 3 x 7 = 21 4 x 7 = 28 5 x 7 = 35 6 x 7 = 42 7 x 7 = 49 1 x 8 = 8 2 x 8 = 16 3 x 8 = 24 4 x 8 = 32 5 x 8 = 40 6 x 8 = 48 7 x 8 = 56 8 x 8 = 64 1 x 9 = 9 2 x 9 = 18 3 x 9 = 27 4 x 9 = 36 5 x 9 = 45 6 x 9 = 54 7 x 9 = 63 8 x 9 = 72 9 x 9 = 81 ``` 希望这个回答对你有帮助! ### 回答3: 要用Python打印九九乘法表,可以使用嵌套循环来实现。首先,我们需要两个循环,一个用于控制行数,另一个用于控制每行打印的数字。 下面是一个示例代码: ```python for i in range(1, 10): # 控制行数 for j in range(1, i+1): # 控制每行的数字个数 result = i * j print(f"{i} * {j} = {result}\t", end="") # 使用制表符分隔每个数字 print() # 打印完一行后换行 ``` 在上述代码中,外层循环控制行数,内层循环控制每行的数字个数。在每个内层循环中,我们计算乘法表达式的结果并打印输出。使用制表符`\t`来分隔每个数字,`end=""`参数表示在打印完一行后不换行。 运行该代码,将会输出以下九九乘法表: ``` 1 * 1 = 1 2 * 1 = 2 2 * 2 = 4 3 * 1 = 3 3 * 2 = 6 3 * 3 = 9 4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16 5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25 6 * 1 = 6 6 * 2 = 12 6 * 3 = 18 6 * 4 = 24 6 * 5 = 30 6 * 6 = 36 7 * 1 = 7 7 * 2 = 14 7 * 3 = 21 7 * 4 = 28 7 * 5 = 35 7 * 6 = 42 7 * 7 = 49 8 * 1 = 8 8 * 2 = 16 8 * 3 = 24 8 * 4 = 32 8 * 5 = 40 8 * 6 = 48 8 * 7 = 56 8 * 8 = 64 9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81 ``` 以上就是使用Python打印九九乘法表的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值