网站首页 > 技术文章 正文
有一次去面试,被问到了九九乘法口诀用代码如何实现 ?虽然当时已经做了出来,但是后来才知道,其实有更简单的方法,只需一行代码就可以实现 。
那么我们先来看下普通的实现方式,就是做个嵌套循环,然后打印两个数的乘积信息 。
for i in range(1,10):
for j in range(i,10):
print("{}×{}={}".format(i,j,j*i),end=" ")
print(" ")
运行结果:
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
直到遇到了python的这个语法,才知道很多代码可以写的更加简洁,这个语法就是使用python的列表推导式。它可以将一个序列构建成另外一个新列表的结构体 。
语法格式如下:
[ expB for x in iterable expA ]

该表达式主要由三部分组成,分别是中间的循环体,循环体后的表达式A,循环体前的对x运算的表达式B。
- for x in iterable : 循环的是一个序列,包括字典,元组,字符串以及range()方法等。此循环体是最先被执行的。
- expA:主要是由if语句或for语句构成,如果是if语句,一般是将x进行条件筛选,符合条件的传递给expB参与运算,如果是for循环,那就是双层嵌套循环,这里需要注意的是,后面的for循环是内层循环体 。当然该表达式也可以省略 。
- expB:主要是对for循环中的x进行的最后的运算,可以是+,-,*,%,|,条件判断以及各种方法等 。
比如,我们要实现这样一个功能,1~5内的数,遇到双数+1,遇到单数-1,返回一个新列表,通过列表推导式就可以这样写
print([x+1 if x % 2 ==0 else x-1 for x in range(1,6)])
#输出 : [0, 3, 2, 5, 4]
以上if条件为真,返回if前面的值,否则返回else后面的值。
知道以上这个原理后,我们就拿这个语法来实现下九九乘法口诀。首先我们知道它是两层嵌套循环 。所以,后面的部分就很好实现,具体如下:
for i in range(1,10) for j in range(i,10)
以上这句话的代码就等同于如下代码,写了个嵌套循环,但是循环内没有实际内容。
for i in range(1,10):
for j in range(i,10):
pass
接下来就是最关键的打印乘法口诀乘积的信息,我们这里先做个分析 ,在打印口诀的信息中,其实有这么两种情况:
- 如果j<9的话,打印两个数的乘积,再加个空格。print("{}×{}={}".format(i,j,j*i),end=" ") if j<9 ,说明:end=“ ”代表空格,如果没有这个参数,默认为回车换行 。
- 如果j=9的话,打印两个数的乘积,再加回车换行。else print("{}×{}={}".format(i,j,j*i))
把以上两种情况连接起来就是以下一句完整的代码,具体如下:
[ print("{}×{}={}".format(i,j,j*i),end=" ") if j<9 else print("{}×{}={}".format(i,j,j*i)) for i in range(1,10) for j in range(i,10)]
通过运行以上这行代码,也可以实现上面的打印效果 。
同理,这个语法其实不仅仅是只能实现以上需求,只要是循环的相关处理,其实都可以考虑使用它来进行实现 。
猜你喜欢
- 2024-12-24 XML处理神器:Python类库让你轻松实现复杂XML操作和数据修改
- 2024-12-24 Python PyInstaller安装和使用教程
- 2024-12-24 pyinstaller,一个超酷的 Python 库!
- 2024-12-24 Python中Pyinstaller库的安装方法(全)
- 2024-12-24 Python音频处理的新选择:深入探索PyAudioMixer库
- 2024-12-24 PyUSB——使用Python链接USB设备
- 2024-12-24 Python+MySQL数据库操作(PyMySQL)
- 2024-12-24 Python 简单实现贪吃蛇小游戏
- 2024-12-24 不要钱,用Python识别图片中的文字
- 2024-12-24 掌握Pymysql轻松实现Python数据库编程
- 05-25Python 3.14 t-string 要来了,它与 f-string 有何不同?
- 05-25Python基础元素语法总结
- 05-25Python中的变量是什么东西?
- 05-25新手常见的python报错及解决方案
- 05-2511-Python变量
- 05-2510个每个人都是需要知道Python问题
- 05-25Python编程:轻松掌握函数定义、类型及其参数传递方式
- 05-25Python基础语法
- 257℃Python短文,Python中的嵌套条件语句(六)
- 257℃python笔记:for循环嵌套。end=""的作用,图形打印
- 256℃PythonNet:实现Python与.Net代码相互调用!
- 251℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 251℃Python实现字符串小写转大写并写入文件
- 106℃原来2025是完美的平方年,一起探索六种平方的算吧
- 90℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 81℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)