运算符补充
逻辑运算符(且,或,非)
-
and
- 且(链接的多个条件一假即假,全真即真。)
- 例:1==1 and 2 > 1
-
or
- 或(链接的多个条件一真即真。)
- 例:1==1 or 1 > 2
-
not
- 非(将条件取反:原对变错,原错变对)
- 例:not False\ not True
-
注:三者混合使用是有优先级
- 括号>not>and>or
成员运算符
- in(在什么之内)
- not in(不在什么之内)
练习
- 判断某一个个体在不在某个群体里面
- 输入:
# rm = ['john', 'tom', 'luci']
# print('tom')
# print('luci' not in rm)
# print('john' in rm)
# print('aim' in rm)
输出结果:
- 列表在做成员运算的时候最小单位是数据值整体,不能再拆分也不能在合并。
- 输入:
rm = ['john', 'tom', 'luci']
print('tom')
print('t' not in rm)
print('to' in rm)
输出结果:
- 字符串在做成员运算的时候最小单位是单个字符,也可以增加字符个数。
- 输入:
sb = 'look look down up'
print('look' in sb)
print('l' in sb)
print('look look down up' in sb)
print(type(sb))
输出结果:
- 字典做成员运算判断的是k键在不在 输入:
sm = {'name': 'tom', 'age': 21}
print('name' in sm)
print('tom' in sm)
print('age'in sm)
print(21 in sm)
print(type(sm))
输出结果:
身份运算符
- is(判断数据值的内存地址是否一致)
- == (判断数据值的值是否一致)
练习
输入:
s1 = [1, 2, 3, 4, 5]
s2 = [1, 2, 3, 4, 5]
print(id(s1))
print(id(s2))
print(s1 == s2)
print(s1 is s2)
- 值相等,内存地址可能不等。
- 内存地址相等,值一定相等。
输出结果:
python内存优化
- python会针对数据量比较小,且经常使用的数据做内存优化。大部分时候IDE编辑工具也会做更多优化处理。 python:
print(id(l1)) # 140707857893312
print(id(l2)) # 140707857893312
编辑工具:
l1 = 9999999
l2 = 9999999
print(id(l1), id(l2)) # 1271940823728 1271940823728
流程控制理论
-
概念:事物的执行流程。(三种)
-
1.顺序结构:从上往下依次执行。
-
2.分支结构:不同条件执行不同代码。
-
3.循环结构:根据条件判断是否一直做某一件事。
-
小知识: 1.python中使用代码的缩进来表示代码的从属关系:缩进的代码是否运行取决于上面没有缩进的父代码(结尾有冒号)。
2.缩进量其实没有要求 只要缩进了即可:但是为了美观 一般推荐使用四个空格。
3.并不是所有的代码都可以拥有子代码:if关键字 else关键字 elif关键字 ( elif else不能单独使用)
4.同属于一个父代码的多行子代码应该保证相同的缩进量:如果代码缩进了,那就必须往上找一个缩进量比它小的代码作为父代码。这个父代码如果可以拥有子代码,那么没有问题,不可以则直接报错。
5.相同缩进量的代码彼此之间没有主次之分 都是按照顺序依次执行。
分支控制
单if分支
- if 条件:条件成立执行的代码(子代码)
注:条件可以是布尔值 也可以是表达式。判断的条件可以是一个 也可以是由逻辑运算符连接的多个。
if...else分支
- if 条件:条件成立之后执行的子代码
- else:条件不成立执行的子代码
注:判断的条件可以是一个 也可以是由逻辑运算符连接的多个。
# 1.获取用户名和密码
name = input('name>>>:')
pwd = input('pwd>>>:')
# 2.判断用户名和密码是否正确
if name == 'jason' and pwd == 123:
# python中不同数据类型之间无法直接做比较
if name == 'jason' and pwd == '123':
# python中不同数据类型之间无法直接做比较
print('欢迎')
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.定义各种条件
gender = 'woman'
age = '18'
values_nature = 'good'
- 2.条件判断
if gender == 'woman':
print('性别为女')
if age < '12' :
print('小朋友')
elif age < '18':
print('小妹妹')
elif age < '24':
print('目标群体')
if values_nature == 'good':
print('考虑一下')
else:
print('你是谁啊')
elif age < '30':
print('大姐姐')
elif age < '36':
print('姐姐')
elif age < '54':
print('阿姨')
else:
print('奶奶')
else:
print('性别为男')
输出结果:
小作业
- 小练习
1.女人的年龄>=18并且<22岁并且身高>170并且体重<100并且是漂亮的,那么:表白,否则:叫阿姨好.
输入:
age = 20
high = 172
weight = 90
ym = '漂亮'
if (age >= 18) and (age < 22):
print('1')
if high > 170:
print('2')
if weight < 100:
print('3')
if ym == '漂亮':
print('表白')
else:
print('阿姨好')
else:
print('阿姨好')
else:
print('阿姨好')
else:
print('阿姨好')
输出结果:
2.根据用户输入内容打印其权限
'''
jason --> 超级管理员
tom --> 普通管理员
jack,rain --> 业务主管
其他 --> 普通用户
'''
输入:
user_id = input('请输入用户名:')
if user_id == 'jason':
print('超级管理员')
elif user_id == 'tom':
print('普通管理员')
elif (user_id == 'jack') or (user_id == 'rain'):
print('业务主管')
else:
print('普通用户')
输出结果:
3.编写用户登录程序
要求:有用户黑名单 如果用户名在黑名单内 则拒绝登录
eg:black_user_list = ['jason','kevin','tony']
如果用户名是黑名单以外的用户则允许登录(判断用户名和密码>>>:自定义)
eg: oscar 123
输入:
user_id = input('用户名:')
user_key = input('密码:')
black_user_list = ['jason', 'kevin', 'tony']
if user_id in black_user_list:
print('黑名单用户,无法登录')
elif user_id == 'oscar' and user_key == '123':
print('登录成功')
else:
print('没有权限')
输出结果:
黑名单:
白名单:
没有注册:
- 订正:
1.女人的年龄>=18并且<22岁并且身高>170并且体重<100并且是漂亮的,那么:表白,否则:叫阿姨好
补充知识
print('11' > '22') # False
print('33' > '11') # True
print('33' > '111') # True
字符串的数字比较大小是按照位置一一比较 只要有一个位置上的数字决出了大小那么整体的结果也就确定了
如果名字绑定的值就是布尔值 那么作为条件的时候可以不做任何比较 直接写
age = 28
height = 175
weight = 99
is_beautiful = True
if 18 <= age < 22 and height > 170 and weight < 100 and is_beautiful:
print('加微信吧')
else:
print('不好意思 认错人了!')
2.根据用户输入内容打印其权限
'''
jason --> 超级管理员
tom --> 普通管理员
jack,rain --> 业务主管
其他 --> 普通用户
'''
name == 'jack' or 'rain' # 错误写法1
name == ('jack' or 'rain') # 错误写法2
# 1.获取用户名
name = input('name>>>:')
# 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
"""编写复杂程序的时候 可以先一条道走到黑 先写正确的逻辑"""
# 1.先定义出黑名单用户
black_user_list = ['jason', 'kevin', 'tony']
# 2.获取用户的用户名
username = input('username>>>:')
# 3.判断用户名是否在黑名单中
if username not in black_user_list:
# 4.让用户输入密码
password = input('password>>>:')
# 5.判断用户名和密码是否正确
if username == 'oscar' and password == '123':
print('欢迎oscar大驾光临')
else:
print('用户名或密码错误')
else:
print('你永久拉黑了 滚蛋吧')