【python基础】第06回 运算符和流程控制 1
本章内容概要
1.运算符
2.流程控制
本章内容详解
1.运算符
什么是运算符?
运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。例如:2+3,其操作数是2和3,而运算符则是“+“
1.1 算数运算符
* ** // % == != 等 详情看上章 x = x + 1 # x += 1 x = x - 1 # x -= 1
1.2 比较运算符
> < == >= <= != 等
x == y
x != y
1.3 赋值运算符
简单赋值 x +=y 等效于 x = x + y x -=y 等效于 x = x - y
链式赋值:
#赋值多个变量名
x = 10
y = x
z = y
链式赋值一行代码解决:x = y = z =10
交叉赋值: m = 1 n = 2 #m n 交换 q = m m = n n = q 交叉赋值一行代码解决:m,n = n,m
解压赋值: a, b, c = [11, 22, 33] # 遵循左右两边个数一致 a, *args = [1, 2, 3, 4, 5] # 不遵循
1.4 逻辑运算符
逻辑运算符用于连接多个条件,进行关联判断,会返回布尔值True或False
and 与
or 或
not 非
and 链接的多个条件必须都成立结果才成立(True) or 链接的多个条件有一个成立结果就成立(True) not 将条件取反(原本是对的就变成错的 如果是错的就变成对的)
and
可以用and连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为False,则无需再往右判断,可以立即判定最终结果就为False,只有在所有条件的结果都为True的情况下,最终结果才为True。
1 == 1 and 2 > 10 and 3!=6 and True and 10 < 2 # False
or
可以用or连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为True,则无需再往右判断,可以立即判定最终结果就为True,只有在所有条件的结果都为False的情况下,最终结果才为False
1 != 1 or 2==2 or False or 3 < 2 or 10 < 1 # True
not
print(not True) print(not False) # False # True
混用and、or、not
# 三者如果混合使用 其实是有优先级的!!!用()来区分优先级 3>4 and 4>3 or 1==3 and 'x' == 'x' or 3 >3 # 不合理的编写方式 # 如果需要三者混合使用 那么应该加上括号来区别优先级 (3>4 and 4>3) or ((1==3 and 'x' == 'x') or 3 >3) # 合理
1.5 成员运算符
in 在什么什么之内 not in 不在什么什么之内
例:
l1 = ['jason', 'kevin', 'tony', 'oscar', 'jerry'] # 判断某个人名在不在班级学生名单中(判断某个个体在不在某个群体内) # print('jason' in l1) # True # print('ja' in l1) # False # print('jason kevin' in l1) # False '''列表在做成员运算的时候最小单位是数据值整体 不能再拆分也不能合并''' # s1 = 'hello big baby!' # print('h' in s1) # True # print('he' in s1) # True # print('hell' in s1) # True # print('hello' in s1) # True '''字符串在做成员运算的时候最小单位是单个字符 也可以增加字符个数''' d1 = {'name': 'jason', 'pwd': 123} print('jason' in d1) # False print(123 in d1) # False print('name' in d1) # True print('pwd' in d1) # True '''字典在做成员运算的时候只有K会参与运算 V默认不暴露给外界'''
1.6 身份运算符
is 判断数据值的内存地址是否一致 == 判断数据值得值是否一致 地址无所谓 id() 该方法会返回一串数字 相当于内存地址
例:
l1 = [11, 22, 33, 44] l2 = [11, 22, 33, 44] print(id(l1)) # 2768135836544 print(id(l2)) # 2768135831424 print(l1 == l2) # True 只判断值 print(l1 is l2) # False 判断内存地址 """ 值相等 内存地址可能不等 内存地址相等 值肯定相等(单次程序中) """
python内存优化 # l1 = 10 # l2 = 10 # print(id(l1)) # 140707857893312 # print(id(l2)) # 140707857893312 """python针对数据量比较小的并且经常使用的数据会做内存优化:小整数池""" l1 = 9999999 l2 = 9999999 print(id(l1), id(l2)) # 1271940823728 1271940823728 """有时候IDE编辑工具也会做更多的优化处理(上述代码使用解释器直接运行 地址不一样)"""
2.流程控制
2.1 流程控制理论
流程控制的概念
本质就是事物的执行流程 事物的执行流程总共就三种
1.顺序结构
从上往下依次执行,之前我们写的代码都是顺序结构
2.分支结构
根据条件的不同执行不同的代码,用到if判断
3.循环结构
根据条件的判断绝对是否一直做某件事,用到while与for
2.2 流程控制结构
1.python中使用代码的缩进来表示代码的从属关系 缩进的代码是否运行取决于上面没有缩进的父代码(结尾有冒号) 2.缩进量其实没有要求 只要缩进了即可 但是为了美观 一般推荐使用四个空格 3.并不是所有的代码都可以拥有子代码 if关键字 else关键字 elif关键字 ( elif else不能单独使用) 4.同属于一个父代码的多行子代码应该保证相同的缩进量 如果代码缩进了 那就必须往上找一个缩进量比它小的代码作为父代码 这个父代码如果可以拥有子代码 那么没有问题 不可以则直接报错 5.相同缩进量的代码彼此之间没有主次之分 都是按照顺序依次执行
2.2.1 顺序结构
从上往下依次执行,之前我们写的代码都是顺序结构
流程图
2.2.2 分支结构
在python中如果想要编写分支结构 那么需要使用关键字if,分支结构就是根据条件判断的真假去执行不同分支对应的子代码
2.2.2.1 单if 分支
if 条件: 条件成立执行执行的代码(子代码) # 条件可以是布尔值 也可以是表达式 # 判断的条件可以是一个 也可以是有逻辑运算符连接的多个
例: # 1.定义女人的年龄 age = 28 # 2.判断女人的年龄 if age < 30: print('小姐姐你好呀!!!')
2.2.2.2 if...else 分支
if 条件: 条件成立之后执行的子代码 else: 条件不成立执行的子代码 # 判断的条件可以是一个 也可以是由逻辑运算符连接的多个
例:
# 模拟用户登录功能 # 1.获取用户名和密码 name = input('name>>>:') password = input("password>>>:") # 2.判断用户名和密码是否正确(目前只能写死) # if name == 'zhang' and password == 123: # python中不同数据类型之间无法直接做比较 if name == 'zhang' and password == '123': print("贵宾一位") else: print("滚蛋")
流程图
2.2.2.3 if...elif...else 分支
if...elif...else分支 if 条件1: 条件1成立执行的子代码 elif 条件2: 条件1不成立 条件2成立执行的子代码 elif 条件3: 条件1和2都不成立 条件3成立执行的子代码 else: 上述所有的条件都不成立执行的子代码 # if elif else三者连用 永远只会走一个分支 # elif 和 else都不能单独使用 必须结合if
例:
# 如果成绩大于90打印优秀 大于80打印良好 大于70打印一般 大于60打印及格 其他打印挂科 score = 92 if score > 90: print("优秀") elif score > 80: print("良好") elif score > 70: print("一般") elif score > 60: print("及格") else: print("挂科")
流程图
2.2.2.4 if的嵌套使用
例: # 在大街上看到一个漂亮的背影 上去要微信 # 如果要微信成功了 则邀请她去看电影(她可能拒绝 也可能接受) # 如果接受了则继续吃饭 逛街 等待天黑!!! # 1.先定义出各种条件 is_wechat = True is_movie = True is_agree = False is_xxx = True # 2.条件判断 if is_wechat: print('要微信成功了') if is_movie: print('要去看电影了 找个后排座位 视野好') if is_agree and True: print('吃饭 逛街 天黑了!!!') else: print('你个臭流氓!!!') else: print('看电影多无聊!!!') else: print('你个癞蛤蟆!!!')
流程图
作业
1.女人的年龄>=18并且<22岁并且身高>170并且体重<100并且是漂亮的,那么:表白,否则:叫阿姨好
# 1.定义女人年龄,身高,体重 age = 18 height = 180 weight = 90 is_beautiful = True # 2.判断 if 18 <= age < 22 and height > 170 and weight < 100 and is_beautiful: print("表白") else: print("阿姨好")
2.根据用户输入内容打印其权限
'''
jason --> 超级管理员
tom --> 普通管理员
jack,rain --> 业务主管
其他 --> 普通用户
'''
# 1.定义用户 name = input("请输入您的用户名>>>:") # 2.判断 if name == 'jason': print("超级管理员") elif name == 'tom': print("普通管理员") elif name == 'jack' or name == 'rain': print("业务主管") else: print("普通用户")
3.编写用户登录程序
要求:有用户黑名单 如果用户名在黑名单内 则拒绝登录
eg:black_user_list = ['jason','kevin','tony']
如果用户名是黑名单以外的用户则允许登录(判断用户名和密码>>>:自定义)
eg: oscar 123
# 先定义黑名单 black_name_list = ['jason', 'kevin', 'tony'] # 获取用户名 username = input("username>>:") # 判断 if username not in black_name_list: password = input("password>>:") if username == 'zhang' and password == '123': print("登录成功") else: print("账号或密码错误") else: print("你已加入黑名单")
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了