通过Python实现九九乘法表

最近正在看《流畅的Python》,啃这本书花了不少时间,主要是在思考和理解,慢慢感觉到自己已经很久没有敲代码了,编程这门课最终还是要多实践、多动手,想想还是定期练练手吧。之前看到过一个Python编程题:用Python实现九九乘法表,就它了。

九九乘法表如果结果不按阶梯状打印的话,实现起来还是很简单的:

一、只获取九九乘法表的值

'''只获取九九乘法表的值,返回含有九九乘法表所有值的列表'''


a = 1
b = 1
c = []
while True:
    if a < 9:
        if b < 9:
            d = a * b
            c.append(d)
            b += 1
            continue
        if b == 9:
            d = a * b
            c.append(d)
            a += 1
            b = a
            continue
    if a == 9:
        d = a * b
        c.append(d)
        break

print(c)

'''以下为返回的内容'''

[1, 2, 3, 4, 5, 6, 7, 8, 9, 4, 6, 8, 10, 12, 14, 16, 18, 9, 12, 15, 18, 21, 24, 27, 16, 20, 24, 28, 32, 36, 25, 30, 35, 40, 45, 36, 42, 48, 54, 49, 56, 63, 64, 72, 81]

二、 同时获取九九乘法表的公示和值

'''只需要在上面的基础上,把a*b公式和值以f字符串的形式赋值给d,就可以获取九九乘法表的公式和值'''

a = 1
b = 1
c = []
while True:
    if a < 9:
        if b < 9:
            d = f'{a} * {b} = {a*b}'
            c.append(d)
            b += 1
            continue
        if b == 9:
            d = f'{a} * {b} = {a*b}'
            c.append(d)
            a += 1
            b = a
            continue
    if a == 9:
        d = f'{a} * {b} = {a * b}'
        c.append(d)
        break

print(c)

'''以下为返回的内容'''

['1 * 1 = 1', '1 * 2 = 2', '1 * 3 = 3', '1 * 4 = 4', '1 * 5 = 5', '1 * 6 = 6', '1 * 7 = 7', '1 * 8 = 8', '1 * 9 = 9', '2 * 2 = 4', '2 * 3 = 6', '2 * 4 = 8', '2 * 5 = 10', '2 * 6 = 12', '2 * 7 = 14', '2 * 8 = 16', '2 * 9 = 18', '3 * 3 = 9', '3 * 4 = 12', '3 * 5 = 15', '3 * 6 = 18', '3 * 7 = 21', '3 * 8 = 24', '3 * 9 = 27', '4 * 4 = 16', '4 * 5 = 20', '4 * 6 = 24', '4 * 7 = 28', '4 * 8 = 32', '4 * 9 = 36', '5 * 5 = 25', '5 * 6 = 30', '5 * 7 = 35', '5 * 8 = 40', '5 * 9 = 45', '6 * 6 = 36', '6 * 7 = 42', '6 * 8 = 48', '6 * 9 = 54', '7 * 7 = 49', '7 * 8 = 56', '7 * 9 = 63', '8 * 8 = 64', '8 * 9 = 72', '9 * 9 = 81']

三、获取九九乘法表的公式和值并阶梯状显示

这里稍微有些复杂,分析一下我们最终需要呈现的内容:

不难发现,获得这个阶梯状打印的便捷方法是将列表中的值以切片形式逐行打印,但这要求列表中的值与九九乘法表中的值(按九九乘法表中从左至右、从上到下的顺序)一一匹配。显然目前我们所得的列表中值的顺序并不满足条件,现在我们需要调整列表的生成逻辑,以使所得列表能够满足要求。

第一步,修改逻辑

def cf():
    a = 1
    b = 1
    c = []
    while True:
        if a < b:
            d = f'{a} * {b} = {a*b}'
            c.append(d)
            a += 1
            continue
        if a == b:
            if b < 9:
                d = f'{a} * {b} = {a*b}'
                c.append(d)
                b += 1
                a = 1
                continue
            if b == 9:
                d = f'{a} * {b} = {a*b}'
                c.append(d)
                print(c)
                print(len(c))
                break
    return c

cf()

'''这样,最终得出的列表是这样'''

['1 * 1 = 1', '1 * 2 = 2', '2 * 2 = 4', '1 * 3 = 3', '2 * 3 = 6', '3 * 3 = 9', '1 * 4 = 4', '2 * 4 = 8', '3 * 4 = 12', '4 * 4 = 16', '1 * 5 = 5', '2 * 5 = 10', '3 * 5 = 15', '4 * 5 = 20', '5 * 5 = 25', '1 * 6 = 6', '2 * 6 = 12', '3 * 6 = 18', '4 * 6 = 24', '5 * 6 = 30', '6 * 6 = 36', '1 * 7 = 7', '2 * 7 = 14', '3 * 7 = 21', '4 * 7 = 28', '5 * 7 = 35', '6 * 7 = 42', '7 * 7 = 49', '1 * 8 = 8', '2 * 8 = 16', '3 * 8 = 24', '4 * 8 = 32', '5 * 8 = 40', '6 * 8 = 48', '7 * 8 = 56', '8 * 8 = 64', '1 * 9 = 9', '2 * 9 = 18', '3 * 9 = 27', '4 * 9 = 36', '5 * 9 = 45', '6 * 9 = 54', '7 * 9 = 63', '8 * 9 = 72', '9 * 9 = 81']

可以发现,列表中值的排列顺序已经与图片中从上到下、从左到右的值匹配了。

第二步,分析规律

分析九九乘法表中的每行值与其在列表中的切片表达式,可以得到:

c[0:1]

c[1:3]

c[3:6]

c[6:10]

c[10:15]

c[15:21]

c[21:28]

c[28:36]

c[36:45]

也就是说,切片表达式c[m:n]中,索引m从0开始,逐行增加1,2,3,4···;索引n从1开始,逐行增加2,3,4,5···那么下面要做的,就是把这个的逻辑用代码表达出来,代码如下

def cf2(c):
    a = 0
    b = 1
    m = 1
    n = 2
    g = c[a:b]
    print(g)
    while True:
        if b < 45:
            a = a + m
            b = b + n
            g = c[a:b]
            print(g)
            m += 1
            n += 1
            continue
        else:
            break

z = cf()
cf2(z)

'''执行代码以后,可以得到如下显示'''

['1 * 1 = 1']
['1 * 2 = 2', '2 * 2 = 4']
['1 * 3 = 3', '2 * 3 = 6', '3 * 3 = 9']
['1 * 4 = 4', '2 * 4 = 8', '3 * 4 = 12', '4 * 4 = 16']
['1 * 5 = 5', '2 * 5 = 10', '3 * 5 = 15', '4 * 5 = 20', '5 * 5 = 25']
['1 * 6 = 6', '2 * 6 = 12', '3 * 6 = 18', '4 * 6 = 24', '5 * 6 = 30', '6 * 6 = 36']
['1 * 7 = 7', '2 * 7 = 14', '3 * 7 = 21', '4 * 7 = 28', '5 * 7 = 35', '6 * 7 = 42', '7 * 7 = 49']
['1 * 8 = 8', '2 * 8 = 16', '3 * 8 = 24', '4 * 8 = 32', '5 * 8 = 40', '6 * 8 = 48', '7 * 8 = 56', '8 * 8 = 64']
['1 * 9 = 9', '2 * 9 = 18', '3 * 9 = 27', '4 * 9 = 36', '5 * 9 = 45', '6 * 9 = 54', '7 * 9 = 63', '8 * 9 = 72', '9 * 9 = 81']

至此,就完成了九九乘法表的获取和显示,在这里把过程分享给大家。

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是Python代码,可以输出九九乘法表: ``` for i in range(1, 10): for j in range(1, i+1): print('{}x{}={}\t'.format(j, i, i*j), end='') print() ``` 输出结果: ``` 1x1=1 1x2=2 2x2=4 1x3=3 2x3=6 3x3=9 1x4=4 2x4=8 3x4=12 4x4=16 1x5=5 2x5=10 3x5=15 4x5=20 5x5=25 1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36 1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49 1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64 1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81 ``` ### 回答2: python输入九九乘法表的方法有很多种。下面我将介绍两种常见的方法。 方法一:使用for循环嵌套 可以使用两个for循环,一个用来控制外层循环,一个用来控制内层循环。外层循环控制行数,内层循环控制每行中的列数。具体代码如下: ``` for i in range(1, 10): for j in range(1, i+1): print('{}x{}={}\t'.format(i, j, i*j), end='') print() ``` 上述代码中,外层循环变量 i 控制行数,内层循环变量 j 控制列数。使用 print 函数输出每个乘法表达式,并使用制表符(\t)进行分隔。使用 end='' 参数可以取消换行符的输出。最后使用 print 函数进行换行操作。 方法二:使用列表推导式 利用列表推导式的特性,可以简化上述代码。具体代码如下: ``` print('\n'.join(['\t'.join(['{}x{}={}'.format(i,j,i*j) for j in range(1,i+1)]) for i in range(1,10)])) ``` 上述代码中,使用两个列表推导式,一个用于生成每行的乘法表达式,另一个用于生成九行的九乘九乘法表。最后使用 join 函数将每行的乘法表达式用换行符连接起来,并输出结果。 这两种方法都可以用来输入九九乘法表,具体选择哪种方法可以根据个人喜好和代码的简洁程度来决定。 ### 回答3: 九九乘法表是一个常见的数学表格,可以通过编程语言Python实现。以下是一个用Python编程实现九九乘法表的例子: ```python for i in range(1, 10): for j in range(1, i+1): print("{} × {} = {}".format(j, i, i*j), end="\t") print() ``` 运行上述代码,将会输出如下的九九乘法表: ``` 1 × 1 = 1 1 × 2 = 2 2 × 2 = 4 1 × 3 = 3 2 × 3 = 6 3 × 3 = 9 1 × 4 = 4 2 × 4 = 8 3 × 4 = 12 4 × 4 = 16 1 × 5 = 5 2 × 5 = 10 3 × 5 = 15 4 × 5 = 20 5 × 5 = 25 1 × 6 = 6 2 × 6 = 12 3 × 6 = 18 4 × 6 = 24 5 × 6 = 30 6 × 6 = 36 1 × 7 = 7 2 × 7 = 14 3 × 7 = 21 4 × 7 = 28 5 × 7 = 35 6 × 7 = 42 7 × 7 = 49 1 × 8 = 8 2 × 8 = 16 3 × 8 = 24 4 × 8 = 32 5 × 8 = 40 6 × 8 = 48 7 × 8 = 56 8 × 8 = 64 1 × 9 = 9 2 × 9 = 18 3 × 9 = 27 4 × 9 = 36 5 × 9 = 45 6 × 9 = 54 7 × 9 = 63 8 × 9 = 72 9 × 9 = 81 ``` 以上代码通过两个嵌套的循环来打印出九九乘法表,外层循环控制乘数i的取值范围,内层循环控制被乘数j的取值范围,利用格式化字符串将乘法表中的运算结果输出到屏幕上。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值