运算符及流程控制
运算符
- 运算符的作用
操作符/运算符的使用,可简洁地表示内建类型的对象处理。主要是对程序中的
数据进行逻辑操作、算术操作、比较操作等动作行为,本质是将在程序中会非常
常用的程序操作封装成成类或函数后,再以字符的形式调用,使执行程序语言更加
简洁和符合国际化。 - 运算符总类
Python里的运算符主要有算术运算符、比较运算符、赋值运算符、位运算符、逻辑运算符、成员运算符、身份运算符这七类。
逻辑运算符
- 逻辑运算符的含义
and 与
or 或
not 非
- 三个运算符都是用来配合条件一起使用
and链接的多个条件必须都成立结果才成立(True)
or链接的多个条件有一个成立结果就成立(True)
not将条件取反(原本是对的就变成错的 如果是错的就变成对的) - 实例
1 == 2 and 2 > 1 and 10 > 3
如果所有的链接符都是 and , 那么判断的时候,只要有一个不符合要求,结果就不成立
1 != 1 or 2==2 or False or 3 < 2 or 10 < 1
如果所有的连接符号都是or 那么判断的时候非常简单 只要有一个符合 后面也不用看了 结果肯定成立
not False
not True
- 注意事项
'''三者如果混合使用,是有优先级的!'''
(3>4 and 4>3) or ((1==3 and 'x' == 'x') or 3 >3)
成员运算符
in 在...之内
not in 不在...之内
l1 = ['bise', 'dsaoi', 's f', 'asfd']
判断某个人的人名在不在班级名单中(判断个体在不在某个群体内)
print('bise' in l1) # Trun
print('dsa' 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': 'asd', 'pwd': 123}
print('asd' in d1) # False
print(123 in d1) # False
print('name' in d1) # True
print('pwd' in d1) # True
'''字典在做成员运算的时候只有K会参与运算 V默认不暴露给外界'''
身份运算符
- 本质
is 判断数据值的内存地址是否一致
== 判断数据值是否一致 - 知识储备
id() 该方法会返回一串数字, 相当于内存地址 - 实例
l1 = [11, 22, 33, 44]
l2 = [11, 22, 33, 44]
print(id(l1)) # 2768135837854
print(id(l2)) # 2768135837854
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编辑工具也会做更多的优化处理(上述代码使用解释器直接运行 地址不一样)"""
流程控制
- 流程控制的概念
本质上就是事物的执行流程,事物的执行流程总共就三种:
1.顺序结构
2.分支结构
3.循环结构 - 储备知识
-
python中使用代码的缩进来表示代码的从属关系缩进的代码是否运行取决于
上面没有缩进的父代码(结尾有冒号)
-
缩进量其实没有要求 只要缩进了即可但是为了美观 一般推荐使用四个空格
-
并不是所有的代码都可以拥有子代码if关键字 else关键字 elif关键字 ( elif else不能单独使用)
-
同属于一个父代码的多行子代码应该保证相同的缩进量如果代码缩进了 那就
必须往上找一个缩进量比它小的代码作为父代码这个父代码如果可以拥有子
代码 那么没有问题 不可以则直接报错
-
相同缩进量的代码彼此之间没有主次之分 都是按照顺序依次执行
- 流程控制——分支结构
在python中如果想编写分支结构,需要使用关键字 if
- 单if分支
条件成立后立即执行正在执行的代码(子代码)
条件可以是布尔值 也可以是表达式
判断的条件可以是一个 也可以是由逻辑运算符连接的多个
# 例:1.定义需执行代码的操作
time = 10
# 2.判断时间
if time < 30:
print('这么快啊')
- if...else分支
if 条件:
条件成立之后执行的子代码
else:
条件不成立执行的子代码
判断的条件可以是一个 也可以是由逻辑运算符连接的多个
# 1.获取用户名和密码
name = input('name>>>:')
pwd = input('pwd>>>:')
if name == 'sun' and pwd == '123': # python中不同数据类型之间无法直接做比较
print('1.8W薪资')
else:
print('进厂去吧')
- if...elif...else分支
if 条件1:
条件1成立执行的子代码
elif 条件2:
条件1不成立 条件2成立执行的子代码
elif 条件3:
条件1和2都不成立 条件3成立执行的子代码
else:
上述所有的条件都不成立执行的子代码
if elif else三者连用 永远只会走一个分支
elif 和 else都不能单独使用 必须结合if - 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并且是漂亮的,那么:表白,否则:叫阿姨好
age = int(input('age>>>:'))
height = int(input('height>>>:'))
weight = int(input('weight>>>:'))
pretty = input('pretty>>>:')
is_pretty = True
if 18 <= age < 22:
if height > 170:
if weight < 100:
if is_pretty:
print('我看你咋这么面熟,怎么这么像我女朋友')
else:
print('阿姨好')
else:
print('阿姨好')
else:
print("阿姨好")
else:
print("阿姨好")
-
流程图
-
2.根据用户输入内容打印其权限
'''
jason --> 超级管理员
tom --> 普通管理员
jack,rain --> 业务主管
其他 --> 普通用户
'''
name = input('please input your name>>>:')
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
name = input('name>>>:')
pwd = input('paw>>>:')
black_user_list = ['jason','kevin','tony']
if name in black_user_list:
print('拒绝登录')
else:
print('登录成功')
- 流程图
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了