流程控制
1.基本运算符
1.1逻辑运算
1.关键字
and 与
or 或
not 非
and是可以链接多个条件的 当每个条件都满足时才能成立
or也是可以链接多个条件的 只要满足一个条件就可以成立
not就是把结果翻转(将原本是True变成False,将原本False变成True)
2.实战演练
and:
1 < 2 and 55 > 33 and 1 == 1 and 'i' == 'i' # True
1 > 10 and 66 > 22 and True and 100 > 11 # False
当链接符号都为and时 那么判断的条件的时候 每个条件都需要成立 结果才能成立 True
如果一个条件不成立那么整个都不成立 结果为False
or:
1 != 1 or 2==2 or False or 3 < 2 or 10 < 1 # True
1 == 2 or 1 >10 or False or 3 > 11 or 2 != 2 # False
当链接符号都为or时 那么判断条件的时候 只需要一个条件成立 结果就可以成立 Ture
如果每个条件都不成立那么整个才都不成立 结果为False
not:
not就是把结果翻转
not True # False
not False # True
3.三者混用
当三者混用的时候 这三者是有优先级的
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.2成员运算
1.关键字
in 在什么什么之内
not in 不在什么什么之内
2.实战演练
eg:判断一个元素是否在一个表格中
L1 = ['jason', 'tony', 'kevin', 'jerry']
print('jason' in L1) # True
print('oscar' in L1) # False
print('jason' not in L1) # Fasle
print('j' in L1) # False
print('ja' in L1) # False
'''主意列表判断成员运算时 它是以列表内完整的一个元素来判断的'''
eg:用字符串来做成员运算
s = 'hello python'
s = 'hello python'
print('h' in s) # True
print('he' in s) # True
print('hello' in s) # True
'''字符串来做成员运算时 最小单位是单个字符 也可以增加字符'''
eg:字典做成员运算
d1 = {'name' : 'stephen', 'age' : 18, 'gender' : 'male'}
print('name' in d1) # True
print('stephen' in d1) # False
print(18 in d1) # True
print('age' in d1) # False
'''字典做成员运算的时候 只有k会参与运算 v是不会暴露给外界的'''
1.3身份运算
1.关键字
is is判断两个数据的内存是否相等
== ==判断两个数据的值是否相等
2.is的运用
当我们使用is()时,它会返回一串数字 相当于内存地址
name = 'jason'
print(id(name)) # 2363574895032
这串数字就是name的内存地址
3.实战演练
l1 = [1, 2, 3, 4]
l2 = [1, 2, 3, 4]
print(id(l1)) # 2227001513672
print(id(l2)) # 2227001513608
这两个的内存地址是不一样的 因为两个列表在内存中位置是不一样的
print(l1 is l2) # False 判断两个的内存地址是否相等 print(l1 == l2) # True 判断两个的值是否相等
'''
值相等 内存地址不一定相等
内存相等 值肯定相等
'''
4.python的内存优化
l1 = 10
l2 = 10
print(id(l1)) # 140707857893312
print(id(l2)) # 140707857893312
'''python针对数据量比较小的并且经常使用的数据会做内存优化>>>小整数池 一般为[-5, 256]'''
但是在IDE编辑工具中也会做更多优化
l1 = 9999999
l2 = 9999999
print(id(l1) # 1904190323568
print(id(l2) # 1904190323568
"""有时候IDE编辑工具也会做更多的优化处理(上述代码使用解释器直接运行 地址不一样)"""
2.流程控制
2.1流程控制的概念
流程控制的本质就是事物的执行流程 事物的执行流程总共就三种
1.顺序结构
从上往下依次执行 我们之前所写的代码都是顺序结构
2.分支结构
根据条件的不同执行不同的代码
3.循环结构
根据条件的对错来判断是否需要一直执行同一个代码
4.储备知识
1.python中使用代码的缩进来表示代码的从属关系
缩进的代码是否运行取决于上面没有缩进的父代码(结尾有冒号)
2.缩进量其实没有要求 只要缩进了即可
但是为了美观 一般推荐使用四个空格
3.并不是所有的代码都可以拥有子代码
if关键字 else关键字 elif关键字 ( elif else不能单独使用)
4.同属于一个父代码的多行子代码应该保证相同的缩进量
如果代码缩进了 那就必须往上找一个缩进量比它小的代码作为父代码
这个父代码如果可以拥有子代码 那么没有问题 不可以则直接报错
5.相同缩进量的代码彼此之间没有主次之分 都是按照顺序依次执行
2.2流程控制之分支结构
'''
在python中如果需要写分支结构那么需要使用关键字 if
'''
2.2.1 单if分支
1.if语法:
if 条件:
条件成立执行执行的代码(子代码)
# 条件可以是布尔值 也可以是表达式
# 判断的条件可以是一个 也可以是由逻辑运算符连接的多个
2.实战演练
# 1.定义一个人的年龄
age = 28
# 2.判断这个人的年龄
if age < 18:
print('小屁孩一个!!!')
还有if的嵌套
# 1.定义一个人的年龄
age = 28
# 2.判断这个人的年龄
if age > 18:
print('可以进入网吧了')
if True:
print('一起开黑把')
2.2.2 if else语句
1.if else的语法结构
if 条件:
条件成立之后执行的子代码
else:
条件不成立执行的子代码
# 判断的条件可以是一个 也可以是由逻辑运算符连接的多个
2.实战演练
# 1.获取用户名和密码
name = input('name>>>:')
pwd = input('pwd>>>:')
pwd = int(pwd) # # python中不同数据类型之间无法直接做比较 所以要把str类型装换为int类型
# 2.判断用户名和密码是否正确(目前只能写死)
if name == 'jason' and pwd == 123:
print('贵宾一位')
else:
print('没钱滚蛋')
2.2.3 if elif else语句
1.语法结构
if 条件1:
条件1成立执行的子代码
elif 条件2:
条件1不成立 条件2成立执行的子代码
elif 条件3:
条件1和2都不成立 条件3成立执行的子代码
else:
上述所有的条件都不成立执行的子代码
# if elif else三者连用 永远只会走一个分支 执行一个另外两个就不会执行
# elif 和 else都不能单独使用 必须结合if
2.实战演练
score=input("请输⼊分数:")
score=int(score)
if score > 90:
print("优")
elif score > 80:
print("良")
elif score > 70:
print("中")
elif score >= 60:
print("及格")
else:
print("不及格")
3.今日作业
3.1 作业1
女人的年龄>=18并且<22岁并且身高>170并且体重<100并且是漂亮的,那么:表白,否则:叫阿姨好
age = input('age>>>:')
height = input('height>>>:')
weight = input('weight>>>:')
age = int(age)
height = int(height)
weight = int(weight)
if 18 <= age < 22 and height > 170 and weight < 100:
print('表白')
else:
print('阿姨好')
3.2 作业2
# 2.根据用户输入内容打印其权限
# '''
# jason --> 超级管理员
# tom --> 普通管理员
# jack,rain --> 业务主管
# 其他 --> 普通用户
# '''
name = input('请输入你的名字>>>:')
if name == 'jason':
print('超级管理员')
elif name == 'tom':
print('普通管理员')
elif name == 'jack' or name == 'rain':
print('业务主管')
else:
print('普通用户')
3.3 作业3
# 3.编写用户登录程序
# 要求:有用户黑名单 如果用户名在黑名单内 则拒绝登录
# eg:black_user_list = ['jason','kevin','tony']
# 如果用户名是黑名单以外的用户则允许登录(判断用户名和密码>>>:自定义)
# eg: stephen 123
black_user_list = ['jason', 'kevin', 'tony']
username = input('请输入你的用户名>>>:')
password = input('请输入你的密码>>>:')
if username in black_user_list:
print('你在我们的黑名单中,无法登入')
elif username == 'stephen' and password == '123':
print('登入成功')
else:
print('用户名或密码错误')