news 2026/5/12 11:38:41

Day02之Python运算符与if结构

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Day02之Python运算符与if结构

一、昨日回顾

1、回顾上篇博客

上篇博客链接

二、Python数据类型转换

1、使用Python实现超市的收银系统

Python:

name=input('请输入您要购买商品名称:')id=input('请输入您要购买商品编号:')price=input('请输入您要购买的商品价格:')print(f'您购买了{name},商品编号为{id},商品价格为{price},欢迎下次光临!')

以上程序虽然可以按照上图完成程序的正常输出,但是遗留了一个非常严重的问题:这个价格price变量无法参与数学运算(如买了两个奥利奥,应该是18.5 * 2),原因在于input()方法返回的所有的结果都是str字符串类型。

怎么解决以上问题呢? 答:使用数据类型转换

2、了解Python数据类型的转换方法

函数说明
int(x)将x转换为一个整数
float(x)将x转换为一个浮点数
complex(real [,imag ])创建一个复数,real为实部,imag为虚部
str(x)将对象 x 转换为字符串
repr(x)将对象 x 转换为表达式字符串
eval(str)用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s)将序列 s 转换为一个元组
list(s)将序列 s 转换为一个列表
chr(x)将一个整数转换为一个Unicode字符
ord(x)将一个字符转换为它的ASCII整数值
hex(x)将一个整数转换为一个十六进制字符串
oct(x)将一个整数转换为一个八进制字符串
bin(x)将一个整数转换为一个二进制字符串

案例1:把用户输入的幸运数字,转换为整型

num=input('请输入您的幸运数字:')print(type(num))# 数据类型转换,把str字符串类型转换为int类型print('-'*20)num=int(num)print(type(num))

以上代码还可以简写为:

num=int(input('请输入您的幸运数字:'))print(type(num))

案例2:多种数据类型转换

# 1、整型转浮点类型 int => floatnum1=10print(float(num1))print(type(float(num1)))print('-'*20)# 2、浮点类型转换为整型 float => int,浮点转整型,其小数点后的数据会丢失!!!num2=18.88print(int(num2))print('-'*20)# 3、把字符串类型转换为整型或浮点类型str1='20'str2='10.88'print(type(int(str1)))print(type(float(str2)))

案例3:eval()方法的使用,把字符串中的数字转换为原数据类型

price=input('请输入您购买商品的价格:')print(eval(price))print(type(eval(price)))

str1 = ‘10’ 经过eval(str1) 转换为int类型

str2 = ‘10.88’ 经过eval(str1) 转换为float类型

3、总结

数据类型转换方法一共学了4个方法:

int() :转整型

float() :转浮点类型

str() :转字符串类型

eval() :把字符串转换为原数据类型

记住:① 如果一个字符串 * 数字,代表对这个字符串进行复制操作

​ ② 当float浮点类型转换为int整型时,其小数点后面的数据会丢失,一定要记住这个特性。

​ ③ 字符串转数值类型,字符串中的数据必须是有意义的数值

三、Python运算符

1、运算案例

需求:用户手工输入梯形的上底、下底以及高,能直接通过Python打印出梯形的面积为多少。

2、算术运算符

所谓的算数运算符就是我们日常生活中的加减乘除等待。

运算符描述实例
+1 + 1 输出结果为 2
-1 - 1 输出结果为 0
*2 * 2 输出结果为 4
/10 / 2 输出结果为 5
//整除9 // 4 输出结果为 2
%取余(取模)9 % 4 输出结果为 1
**幂指数2 ** 4 输出结果为 16,即2的4次方,2 * 2 * 2 * 2
()小括号小括号用来提高运算优先级,即 (1 + 2) * 3 输出结果为 9

案例1:了解一下算术运算符

num1=10num2=2# 四则运算 + - * /print(f'加:{num1+num2}')print(f'减:{num1-num2}')print(f'乘:{num1*num2}')print(f'除:{num1/num2}')

案例2:和其他编程语言不太相同的几个算术运算符

num1=20num2=6num3=5# 1、整除print(f'整除:{num1//num2}')# 2、求余数print(f'余数:{num1%num2}')# 3、幂指数print(f'幂指数:{num2**3}')# 4、圆括号print(f'优先级:{(num1+num2)*num3}')

3、算术运算符案例:求梯形的面积

知识点:用户输入、数据类型转换以及算术运算符

a=float(input('请输入上底:'))b=float(input('请输入下底:'))h=float(input('请输入高:'))s=(a+b)*h/2print(f'梯形的面积:{s}')

4、赋值运算符

运算符描述实例
=赋值将=右侧的结果赋值给等号左侧的变量

案例1:把某个值赋值给某个变量

num=10

案例2:多个变量同时进行赋值操作

n=5f=10.88s='hello world'

简写为:

n,f,s=5,10.88,'hello world'print(n)print(f)print(s)

案例3:多个变量赋予相同的值

a=10b=10

简写为:

a=b=10

5、复合赋值运算符

复合赋值运算符 = 算术运算符 结合 赋值运算符

复合赋值运算符的计算顺序 = 先执行算术运算符,执行完毕后,把结果在赋值给左边的变量。

案例:综合案例

i=1# 相加并赋值,先加1,然后把结果赋值给左边的变量i+=1print(f'更新后,i的值为:{i}')num1=9# 取模并赋值,先求余数,然后在把结果赋值给左边的变量num1%=2print(f'更新后,num1的值为:{num1}')num2=2# 幂指数并赋值,先求幂指数,然后把结果赋值给左边的变量num2**=3print(f'更新后,num2的值为:{num2}')

6、比较运算符

特别注意:当我们使用比较运算符对两个变量进行比较时,其返回一个布尔类型的值。

案例:两个数大小的比较

num1=10num2=20print(num1>num2)# Falseprint(num1<num2)# Trueprint(num1>=num2)# Falseprint(num1<=num2)# Trueprint(num1==num2)# Falseprint(num1!=num2)# True

7、练习题

练习题1:提示用户输入圆的半径,根据公式S = πr2求圆的面积

r=float(input('请输入要计算圆的半径:'))PI=3.14s=PI*r**2print(f'圆的面积为:{s}')

练习题2:赋值运算 => 输入身高,体重,求BMI = 体重(kg)/身高(m)的平方。

height=float(input('请输入您的身高(m):'))weight=float(input('请输入您的体重(kg):'))bmi=weight/height**2print(f'您的BMI值为{bmi}')

8、逻辑运算符(与或非)

not就是取反,只有一个表达式not 表达式,如果表达式为True,则not以后就返回False。反之,则返回True。

and :逻辑与,只有当两边的表达式全部为真,则最终结果返回为真,否则返回为假。

x :False

y :False

result = x and y

or :逻辑或,只要有一方为真,则整个表达式的返回结果就为真。除非两边的表达式都为假,则整个结果返回为假。

result = x or y

讲个非诚勿扰的小故事:

① 女孩子要求比较高,要求男孩子必须要有房且有车

表达式1and表达式2当表达式1True且表达式2True时,则整个表达式返回结果为True当表达式1或表达式2中有一个表达式为假,则整个表达式返回结果为False有房and有车 则 牵手成功 有房and没车 则 牵手失败 没房and有车 则 牵手失败

② 女孩子要求一般,要求男孩子有房或者有车即可

表达式1or表达式2当表达式1True或表达式2True时,则整个表达式返回结果为True当表达式1与表达式2都为False时,则整个表达式才会返回False有房or有车 则 牵手成功 有房or没车 则 牵手成功 没房or有车 则 牵手成功 没房or没车 则 牵手失败

逻辑与、或、非,其最终的返回结果也是一个布尔类型的值,True或False。另外在实际工作中,逻辑运算符也主要和if分支结构相结合。

案例:

a=1b=2c=3print((a>b)and(b>c))# Falseprint((a>b)or(b>c))# Falseprint((a<b)or(b>c))# Trueprint(not(a>b))# True

9、扩展:短路运算

在Python代码中,逻辑运算符的运算,要遵循短路运算原则。

① 表达式1 and 表达式2,如果表达式1条件为真,则最终的运算结果由右边的表达式2来决定。如果表达式1条件为假,则最终结果为假。其右边的表达式2不需要在进行运算。

② 表达式1 or 表达式2,如果表达式1为真,则最终的运算结果由表达式1来决定,为真。如果表达式1为假,则最终结果由表达式2来决定。如果表达式2为真,则最终结果为真,如果表达式2为假,则最终结果为假。

print(3and4and5)# 5print(5and6or7)# 64>3andprint('hello world')# 输出hello world

在逻辑运算中,不一定逻辑运算符的两边都是纯表达式,也可以是数值类型的数据或字符串类型的数据。

Python把0、空字符串和None看成 False,其他数值和非空字符串都看成 True,所以:

① 在计算 a and b 时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。

print(3and4)# 4print(0and1)# 0

② 在计算 a or b 时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。 所以Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。

print(6or7)# 6print(6and7or8)# 7

10、运算符的优先级

什么是运算符的优先级?其实我们小学就已经接触过了,就是在一个表达式中,我们先算谁的问题。

先算乘除,后算加减,有括号的先算括号里面的。

个人建议:

① 不要把一个表达式写得过于复杂,如果一个表达式过于复杂,尝试把它拆分来书写

② 不要过于依赖运算符的优先级来控制表达式的执行顺序,这样可读性太差,应尽量使用( )来控制表达式的执行顺序

四、if选择判断结构

1、if选择判断结构作用

在日常开发中,只要有需要进行条件判断的语句基本上都是选择判断结构。

应用场景:

如果年龄大于等于18岁,则可以正常上网。

如果升级考试成绩大于60分,则可以顺利升级就业班。

2、if选择判断结构的基本语法

Java:

if(条件判断){则执行某段代码...}

但是Python中,不需要使用这么多复杂的符号,直接可以编写条件判断及执行某段代码

Python:

if条件判断:则执行某段代码...print()

案例代码:

ifTrue:print('条件成立执行的代码1')print('条件成立执行的代码2')# 下方的代码没有缩进到if语句块,所以和if条件无关print('我是无论条件是否成立都要执行的代码')

3、if选择结构案例

需求:定义一个变量age = 18,判断这个变量是否大于等于18岁,如果满足条件,则可以上网。

案例1:直接定义判断,进行条件判断

age=18ifage>=18:print('满足18岁要求,可以正常上网')

案例2:上网吧案例升级版

age=int(input('请输入您的年龄:'))ifage>=18:print('满足18岁要求,可以正常上网')

if选择原理图:学编程除了会写代码还不行,还要回画图(流程图)

4、if…else…结构

基本语法:

if条件判断:当条件判断为True时,则执行这个语句段else:当条件判断为False时,则执行这个语句段

案例3:上网吧案例升级升级版,引入else

age=int(input('请输入您的年龄:'))ifage>=18:print('满足18岁要求,可以正常上网')else:print('不满足18岁要求,回家好好学习,天天向上')

if…else…结构原理图:

5、if…elif…else多条件判断结构

如果条件1成立,则执行语句段1

如果条件2成立,则执行语句段2

当所有条件都不成立时,则执行else语句段中的内容

if条件判断1:如果此条件为True,则执行这个语句段elif条件判断2:如果此条件为True,则执行这个语句段elif...:...else:如果以上所有条件判断都不满足时,则执行这个语句段

if多重条件判断原理图:

案例:

① 中国合法工作年龄为18-60岁,即如果年龄小于18的情况为童工,不合法;

② 如果年龄在18-60岁之间为合法工龄;

③ 大于60岁为法定退休年龄。

# 定义一个变量,接收用户输入的年龄age=int(input('请输入您的年龄:'))ifage<18:print('你还是一个童工,回去好好学习')elifage>=18andage<=60:print('合法工龄,可以正常工作')else:print('您已经达到了退休年龄,回家好好休息')

简写形式:

# 定义一个变量,接收用户输入的年龄age=int(input('请输入您的年龄:'))ifage<18:print('你还是一个童工,回去好好学习')elif18<=age<=60:print('合法工龄,可以正常工作')else:print('您已经达到了退休年龄,回家好好休息')

6、if嵌套结构

基本语法:

if外层条件判断:# 如果条件为True,则执行以下语句段if内层条件判断:# 如果内层条件为True,则执行以下语句段else:# 如果条件为False,则执行以下语句段

嵌套结构看起来异常复杂,但是我们在编写时要遵循一个原则:先编写外层判断,所有语句编写完成后,在编写内层条件判断结构。

案例:法律规定,车辆驾驶员的血液酒精含量小于 20mg/100ml 不构成酒驾;酒精含量大于或等于 20mg/100ml 为酒驾;酒精含量大于或等于 80mg/100ml 为醉驾。编写 Python 程序判断是否为酒后驾车。

proof=int(input('请输入驾驶员100ml血液中的酒精含量:'))# 判断proof酒精含量是否小于20mgifproof<20:print('驾驶员不构成酒驾')else:# 已经构成酒驾 => 两种类型(酒驾与醉驾)ifproof>=80:print('驾驶员已构成醉驾')else:print('驾驶员已构成酒驾')

五、综合案例:石头剪刀布

1、需求分析

参与游戏的角色有两个(玩家 与 电脑),玩家手工出拳,电脑随机出拳,根据石头剪刀布判断输赢。

玩家:player(玩家手工输入石头、剪刀、布)

电脑:computer(随机出拳)

输赢结果很重要,有三种情况:

① 玩家赢

☆ player:石头 赢 computer:剪刀

☆ palyer:剪刀 赢 computer:布

☆ player:布 赢 computer:石头

② 平局

只要player 与 computer出拳相等,就代表平局

③ 电脑赢

如果不满足以上两个条件,则电脑获胜!

未知知识点:如何让计算机随机出拳 => 随机

2、代码实现

确认:if…elif…else多条件分支结构

# 第一步:提示输入输入石头剪刀布,0-代表石头,1代表剪刀,2代表布player=int(input('请输入您的出拳0-代表石头,1代表剪刀,2代表布:'))# 第二步:电脑随机出拳(后续解决)computer=1# 第三步:根据用户以及计算机的出拳判断输赢# 什么情况,玩家会赢# player==0且computer==1 或 palyer==1且computer==2 或 player==2且computer==0if(player==0andcomputer==1)or(player==1andcomputer==2)or(player==2andcomputer==0):print('玩家获胜')elifplayer==computer:print('平局')else:print('电脑获胜')

遗留问题:计算机没办法随机出拳

3、随机出拳

Python语言非常的强大,强大之处就在于其拥有很多模块(module),这些模块中拥有很多别人已经开发好的代码,我们可以直接导入到我们的程序中即可使用。

① import导入模块

② 通过模块.方法()调用相关功能

随机出拳其实就是随机从0,1,2中选出一个数字

importrandom# 调用内部封装的方法computer=random.randint(0,2)

改进猜拳代码:

importrandom# 第一步:提示输入输入石头剪刀布,0-代表石头,1代表剪刀,2代表布player=int(input('请输入您的出拳0-代表石头,1代表剪刀,2代表布:'))# 第二步:电脑随机出拳(后续解决)computer=random.randint(0,2)print(computer)# 第三步:根据用户以及计算机的出拳判断输赢# 什么情况,玩家会赢# player==0且computer==1 或 palyer==1且computer==2 或 player==2且computer==0if(player==0andcomputer==1)or(player==1andcomputer==2)or(player==2andcomputer==0):print('玩家获胜')elifplayer==computer:print('平局')else:print('电脑获胜')

六、三目运算符

1、什么是三目运算符

在Python中三目运算符也叫三元运算符,其主要作用:就是用于简化if…else…语句。

2、基本语法

if条件判断:# 语句段1else:# 语句段2

转换为三目运算符:

语句段1if条件判断else语句段2

3、三目运算符案例

需求:输入两个数值,返回最大值

num1=10num2=20ifnum1>num2:print(f'最大值为{num1}')else:print(f'最大值为{num2}')

简化:三目运算符

num1=10num2=20max=num1ifnum1>num2elsenum2print(f'最大值为{max}')

player0且computer1 或 palyer1且computer2 或 player2且computer0

if (player == 0 and computer == 1) or (player == 1 and computer == 2) or (player==2 and computer == 0):
print(‘玩家获胜’)
elif player == computer:
print(‘平局’)
else:
print(‘电脑获胜’)

# 六、三目运算符 ## 1、什么是三目运算符 在Python中三目运算符也叫三元运算符,其主要作用:==就是用于简化if...else...语句。== ## 2、基本语法 ```python if 条件判断: # 语句段1 else: # 语句段2

转换为三目运算符:

语句段1if条件判断else语句段2

3、三目运算符案例

需求:输入两个数值,返回最大值

num1=10num2=20ifnum1>num2:print(f'最大值为{num1}')else:print(f'最大值为{num2}')

简化:三目运算符

num1=10num2=20max=num1ifnum1>num2elsenum2print(f'最大值为{max}')
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/8 6:41:02

FaceFusion镜像日志监控系统搭建:运维可视化的最佳实践

FaceFusion镜像日志监控系统搭建&#xff1a;运维可视化的最佳实践在AI换脸技术逐渐从实验室走向生产环境的今天&#xff0c;FaceFusion这类基于深度学习的应用已广泛应用于影视合成、虚拟主播和数字人交互场景。随着部署规模扩大&#xff0c;服务不再只是“跑起来就行”——稳…

作者头像 李华
网站建设 2026/5/3 6:50:19

c#DataTable类

在 C# 的ADO.NET中&#xff0c;DataTable是内存中的数据表&#xff0c;是DataSet的核心组成部分&#xff0c;也可独立使用。它模拟了关系型数据库中 “表” 的结构&#xff0c;包含列定义&#xff08;DataColumn&#xff09;、行数据&#xff08;DataRow&#xff09;、约束&…

作者头像 李华
网站建设 2026/5/11 15:20:53

Langchain-Chatchat如何处理超长PDF文档?技术细节曝光

Langchain-Chatchat如何处理超长PDF文档&#xff1f;技术细节曝光 在企业知识管理的日常中&#xff0c;你是否曾面对这样的情境&#xff1a;一份长达百页的合同或制度文件摆在面前&#xff0c;领导突然问&#xff1a;“这份文档里关于供应商退出机制是怎么规定的&#xff1f;”…

作者头像 李华
网站建设 2026/5/7 12:07:34

音视频C++开发进阶指南

目录 一、音视频 C 岗位「必须掌握」&#xff08;核心基础&#xff09; 1️⃣ 音视频基础原理&#xff08;面试必问&#xff09; &#x1f3b5; 音频基础 &#x1f3ac; 视频基础 2️⃣ FFmpeg&#xff08;音视频 C 的绝对核心&#xff09; 必须掌握 必会 API&#xff0…

作者头像 李华
网站建设 2026/5/9 11:22:00

Langchain-Chatchat API接口调用示例代码大全

Langchain-Chatchat API 接口调用实践与系统集成指南 在企业智能化转型的浪潮中&#xff0c;一个日益突出的问题浮出水面&#xff1a;通用大语言模型虽然“见多识广”&#xff0c;但在面对公司内部制度、产品手册或客户合同这类私有知识时&#xff0c;往往答非所问&#xff0c;…

作者头像 李华
网站建设 2026/5/8 17:47:57

FreeControl终极指南:如何在PC上完美控制Android设备

FreeControl终极指南&#xff1a;如何在PC上完美控制Android设备 【免费下载链接】FreeControl 在PC上控制Android设备。 项目地址: https://gitcode.com/gh_mirrors/fr/FreeControl FreeControl是一个基于开源项目scrcpy构建的Android设备控制工具&#xff0c;通过简洁…

作者头像 李华