条件运算符+流程控制语句

1. 条件运算符

1.1 执行流程:

运算符形式

语句1 if 表达式 else 语句2

注意:条件运算符不包含冒号,与 if 语句是有区别的。
流程解析:首先对 if 后的表达式进行判断,如果表达式的判断结果为True,则执行语句1,反之,则执行语句2。
执行流程如下图:
在这里插入图片描述

1.2 示例代码

# 求a和b之间的最大值
a = 40
b = 30
m = a if a > b else b # 如果 a > b, 就把a赋值给m,反之则把b赋值给m
print('a和b中的较大值是:', m)

代码执行结果:
在这里插入图片描述

2. 运算符的优先级

2.1 经典案例

这里给出一个简单但很经典的代码样例:

a = 2 or 3 and 4
print('a = ', a)

运算符优先级分析情况如下:

  • 如果 or 的优先级比 and 高
    先算 2 or 3(or运算找True,2为True,直接返回原值2),结果为2,再算 2 and 4(and找False,2和4都是True,返回原值4),结果为4;
  • 如果 or 和 and 的优先级一样高
    还是按照从左往右的顺序计算,结果和上一种情况一样,为4;
  • 如果 or 的优先级比 and 低
    先算 3 and 4,结果为4,再算 2 or 4,结果为2。

代码执行结果如下:
在这里插入图片描述

结果为2,说明 and 运算符的优先级比 or 高。

2.2 查询运算符优先级

python3.9 官方文档链接
https://docs.python.org/3.9/
在首页点击Language Reference,页面跳转后点击6.17-Operator precedence,即能看到以下内容:

在这里插入图片描述

表中运算符的优先级越往下越高,比如 and 的优先级比 or 高,括号 ((), [], {}) 的优先级通常是很高的。运算符的优先级一样高时,按照从左往右的顺序执行程序。

3. 条件控制语句

3.1 if 语句

if 语句形式

if 条件表达式:
	代码块

流程解析:if语句在执行时,会先对条件表达式进行求值判断,如果为True,则执行if后的语句;如果为False,则不执行。

示例代码:

num = 30
if num > 20:
    print(num, '比20大')

运行结果:
在这里插入图片描述
代码块的概念
在默认情况下,if 语句只会控制紧跟其后的那条语句;
如果希望 if 语句可以控制多条语句,则可以在 if 后面跟一个代码块;
代码块中保存着一组代码,要么都执行,要么都不执行;
代码块要以缩进4个空格(1个Tab键)开始,直到代码恢复到之前的缩进级别时结束;
代码块就是⼀种为代码分组的机制。

3.2 小插曲 input() 函数

  • input() 函数用于获取用户输入数据,返回一个str类型;
  • input() 调用后,程序会立即暂停,等待用户输入;
  • 用户输入完内容以后,点击回车程序才会继续向下执行;
    示例代码:
# 获取用户输入的名字,如果名字是python,输出提示‘欢迎访问’
name = input('请输入名字:')
if name == 'python':
    print('欢迎访问')

运行结果:

在这里插入图片描述
在这里插入图片描述

再次强调,input() 函数返回的是str类型,如需改用其他类型,一定要进行类型转换
示例代码:

# 让用户输入工资
salary = input('请输入您的月收入:')
if salary >= 2000:
    print('您能自食其力了')

运行结果:

在这里插入图片描述

报错提示,int 和 str 不能进行比较。在input() 返回的结果上加一个强制类型转换,正确代码修改如下:

# 让用户输入工资
salary = int(input('请输入您的月收入:'))
# salary = int(salary)
if salary >= 2000:
    print('您能自食其力了')

运行结果:

在这里插入图片描述

3.3 if-else 语句

if-else 语句形式

if 条件表达式:
	代码块
else:
	代码块

流程解析:if语句在执行时,会先对条件表达式进行求值判断,如果为True,则执行if后的语句;如果为False,则执行else后的代码块。
示例代码:

# 让用户输入工资
salary = int(input('请输入您的月收入:'))
# salary = int(salary)
if salary >= 2000:
    print('您能自食其力了')

运行结果:
首先输入2500,验证 if 后的语句是否执行:

在这里插入图片描述

然后输入1500,验证 else 后的语句是否执行:

在这里插入图片描述

3.4 if-elif-else 语句

if-else 语句形式

if 条件表达式:
	代码块
elif 条件表达式:
	代码块
else:
	代码块

流程解析:

  • if-elif-else 语句在执行时,会自上向下依次对条件表达式进行求值判断;
  • 如果表达式的结果为True,则执行当前代码块,然后语句结束;
  • 如果表达式的结果为False,则继续向下判断,直到找到True为止;
  • 如果所有的表达式都是False,则执行else后的代码块。
    总结:if-elif-else中只会有⼀个代码块会执行。若是满足第一个条件,执行完第一个代码块后,其他的 elif 语句控制的代码块不会执行。
# 让用户输入工资
salary = int(input('请输入您的月收入:'))
if salary >= 20000:
    print('您的生活相当滋润')
elif salary >= 10000:
    print('您已经本小康了')
elif salary >= 5000:
    print('您能自食其力了')
else:
    print('您要加油了')

运行结果:
在这里插入图片描述

3.5 if 语句小练习

练习题目:输入狗的年龄,将狗的年龄转化为人类对应的年龄,然后输出。转换规则如下:狗的前两岁,每一年相当于人类的10.5岁,之后每增加一岁,相当于人类增加四岁。
编写代码:

# 编写程序,获取狗的年龄,计算对应的人类年龄。
# 如果用户输入的是负数,输出一个提示信息
dog_age = float(input('请输入狗的年龄:'))
person_age = 0.0
# 输入年龄大于0才执行
if dog_age > 0.0:
    # 如果狗小于2岁
    if dog_age <= 2.0:
        # 直接将年龄乘以10.5
        person_age = dog_age*10.5
    else:
        # 先计算2岁以内的年龄
        person_age = 2.0*10.5
        # 计算2岁以外的年龄,再和之前计算的值相加
        person_age += (dog_age-2.0)*4.0
    print(dog_age,'岁的狗,年纪相当于',person_age,'岁的人')
# 用户输入负数,输出提示信息
else:
    print('狗的年龄不能小于0')

运行结果:
首先验证,正常情况下计算是否正确:

在这里插入图片描述

输入一个负数,验证 else 控制的语句执行情况:

在这里插入图片描述

3. 循环控制语句

循环语句可以使指定的代码块重复指定的次数。循环语句分成两种,while循环和 for循环。

3.1 while语句

while 语句形式

while 条件表达式:
	代码块
else:
	代码块

流程解析:

  • while 语句在执行时,会先对条件表达式进行求值判断;
  • 如果为True,则执行循环体的语句;
  • 循环体执行完毕,继续对条件表达式进行判断;
  • 以此类推,直到判断结果为False,则循环结束或者执行else语句。

循环三要素:

  • 初始化表达式
  • 条件表达式
  • 更新条件表达式

示例代码:

# 初始化表达式,初始化循环变量
i = 0
# 条件表达式,用于设置循环执行的条件
while i < 10:
    print(i)
    # 更新条件表达式,修改初始化变量的值
    i += 1
else:
    print('这里是else语句中的代码')

运行结果:

在这里插入图片描述

3.2 while语句小练习

练习题目:求100以内所有偶数之和。
编写代码:

# 初始化循环变量
i = 0
# 定义一个变量,保存求和的结果
r = 0
# 设置条件表达式
while i < 100:
	# 更新条件表达式
    i += 1
    # 判断整数是否是偶数
    if i % 2 == 0:
        r += i  
print('r = ', r)

另外一种简便写法,从0开始,每次加2就是偶数,无需再次判断。代码改为:

# 初始化循环变量
i = 0
# 定义一个变量,保存求和的结果
r = 0
# 设置条件表达式
while i < 100:
    # 从0开始,每加2就是一个偶数
    i += 2
    r += i
print('r = ', r)

运行结果:

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值