运算符和流程控制
运算符
运算符之逻辑运算符
and 是(都要满足)
or 与(满足一个即可)
not 非(与原本相反)
1.and链接的多个条件必须都满足时,结果才会成立,输出的布尔值为True
2.or链接的多个条件满足任意一个时,结果才会成立,输出的布尔值为True
3.not链接的多个条件只要与原本意思相反便可成立,即对就是错错就是对
and:
# 判断下列输出的是True还是False
a = 1 == 2 and 3 > 2 and 1
print(a) # False 1不等于2是显然的所以直接输出False
b = 9 > 8 and 8 and 1 == 1
print(b) # True 9是大于8并且数字8所输出的布尔值是True并且1是等于1输出True
'''and所链接的条件只要有一个不成立那么最后的结果不成立(错误),反之就是成立的(正确)。一假则假,全真则真'''
or:
# 判断下列输出的是True还是False
a = 1 != 2 or 2 == 1 or False or 3 < 1
print(a) # True 1不等于2是对的,所以输出的True
b = 1 == 3 or False or 6 > 7
print(b) # False 1不等于2,False输出的就是False,6是小于7,所以输出False
'''or所链接的条件只要有一个是成立的那么最后的结果成立(正确),反之就是不成立的(错误)。一真则真,全假则假'''
not:
# 判断下列输出的是True还是False
print(not False) # True 不是错的那就是对的,输出True
print(not True) # False 不是对的那么就是错的,输出False
'''not所链接的条件都是与原条件相反的'''
复合链接(混合使用)
三者混合使用时是具有优先级的,() > not > and > or
a = 2 == 1 and 3 > 8 or 0 and 'x' == 'x' or 2 == 2 # 不合理的编写方式
a = (2 == 1 and 3 > 8) or (0 and 'x' == 'x') or 2 == 2
print(a) # True 优先判断号里的条件是否成立,再分开判断
运算符之成员运算符
in 是否包含某条件,输出正确为True反之为False
not in 是否不包括某条件,输出正确为True反之为False
a = ['apple', 'banana', 'orange']
print('apple' in a) # True 只能取整个数据值
print('a' in a) # False 不能取数据值的部分
print('app' in a) # False 不能取数据值的部分
b = ['apple', 'banana', 'orange']
print('apple' not in b) # False 苹果在列表里
print('watermelon' not in b) # True 西瓜本就不在列表里
print('ap' not in b) # True 列表里没有'ap'
'''列表在做成员运算时,是以数据值整体为最小单位,不能进行拆分和整合'''
a = 'We want to see sea!'
print('We' in a) # True
print('W' in a) # True
print('We want to' in a) # True
'''字符串在做成员运算时,是以单个字节为最小单位,可输入多个字节'''
a = {'name': 'orange', 'age': 18, 'gender': 'female'}
print('name' in a) # True 按K判断条件是否成立
print('orange' in a) # False 不能按V判断条件是否成立,隐私性保护
print(18 in a) # False 不能按V判断条件是否成立,隐私性保护
print({'name': 'orange'} in a) # unhashable type: 'dict' 不能使用字典
# print('age': 18 in a) # 直接报错
'''字典在做成员运算时,是以K值整体为最小单位,不能使用K:V键值对也不能使用V值查询'''
运算符之身份运算符
is 判断两个变量引用的对象是否为同一个,即内存地址是否相同
== 判断引用变量的值是否相等,内存地址无所谓
id() 用于查看内存地址,返回一堆数字
a = [111, 222, 333, 444, 555, 666]
b = [111, 222, 333, 444, 555, 666]
print(a is b) # False is判断的是内存地址是否相同
print(a == b) # True ==判断的是值是否相同
print(id(a)) # 1395772501896
print(id(b)) # 1395772501832
'''值相等内存地址可能不等,内存地址相同,值肯定相同(单次程序)'''
c = 1234567890987654321
d = 1234567890987654321
print(c is d) # True 内存地址相同,因为pycharm实现int的时候有个小正数池
print(c == d) # True 值是相同的
print(id(c)) # 3111225966384
print(id(d)) # 3111225966384
'''pycharm实现int的时候有个小正数池,为了性能上的优化使用小正数池,复用出现较多相同的整数。但是使用解释器运行内存地址是不同的'''
流程控制
流程控制理论
程序中的语句默认是自上而下的顺序执行。流程控制是指程序在程序执行时通过特地的指令更改程序中语句的执行顺序。事物的执行流程分为三种:顺讯结构、分支结构、循环结构。
储备知识
1.python中的代码缩进是表示代码之间的从属关系(亲属关系),缩进的代码是否执行取决于上层有没有缩进的父代码,父代码结尾有冒号。
2.缩进量没有要求,只要缩进即可为了美观一般推荐四个空格。
3.并不是所有的代码都可以拥有子代码,if、else、elif关键字有子代码,但是else和elif不能单独使用。
4.同属于一个父代码的多行子代码的缩进量必须是相同的,若代码缩进了那么就向上找缩进量比它小的代码作为父代码,这父代码可以拥有子代码那么没有问题否则直接报错。
5.相同缩进量的代码之间没有主次之分即没有从属关系都是按照顺序依次执行。
1.顺序结构
通常情况下程序都是自上而下的顺序执行,这就是顺序结构。我们最初的学习就是用到顺序结构。
a = 111111
b = 222222
c = 333333
print(a) # 111111
print(c) # 333333
print(b) # 222222
2.分支结构
分支结构和顺序结构有所不同,它需要根据某些特定的条件作出判断再执行不同的流程代码。
if...
if...else...
if...elif...else...
1.单if分支
if 条件:
条件成立执行的代码块(子代码)
# 条件可以是布尔值也可以是表达式
# 判断的条件可是一个也可是多个由逻辑运算连接起的条件
# 定义一个人的年龄为age判断这个人是否成年
age = input('请输入您的年龄:') # 定义变量age,输入数字
age = int(age) # input输入的都是字符串类型所以需要类型转换
if age > 18: # 判断age是否大于18
print('你已经是一个大人了!') # 若输入的数字大于18则打印输出
嵌套:
# 定义一个人的年龄为age判断这个人是否成年
age = input('请输入您的年龄:') # 定义变量age,输入数字
age = int(age) # input输入的都是字符串类型所以需要类型转换
if age > 18: # 判断age是否大于18
print('你已经是一个大人了!') # 若输入的数字大于18则打印输出
if age < 30: # 判断age是否小于30
print('你是小朋友!') # 若输入的数字小于30则打印输出
2.if...else...分支
if 条件:
条件成立执行的代码块(子代码)
esle:
条件不成立执行的代码块(子代码)
# 条件可以是布尔值也可以是表达式
# 判断的条件可是一个也可是多个由逻辑运算连接起的条件
# 判断用户登录
name = input('请输入您的用户名:') # 定义变量name,输入字符串
pwd = input('请输入您的密码:') # 定义变量pwd,输入字符串
if name == 'orange' and pwd == '123': # 判断name和pwd对于的值是否相等 注意不同的数据类型之间无法做比较
print('登录成功!') # 若输入的数字大于18则打印输出
else:
print('登录失败!') # 若输入的数字小于18则打印输出
'''注意python中不同的数据类型不能直接做比较'''
- if…else…
- 嵌套
3.if...elif...else...分支
if 条件1:
条件1成立执行的代码块(子代码)
elif 条件2:
条件1不成立执行条件2的代码块(子代码)
esle:
所有条件都不成立(条件1和2都不成立)执行代码块(子代码)
# if elif else 三者连用时蝾螈只会走一个分支
# elif else不能单独使用,必须前面结合if使用
嵌套:
is_eat = True
is_drink = True
is_play = False
# 2.条件判断
if is_eat: # 如果吃了
print('吃啥?') # 打印输出
if is_drink:
print('喝啥?')
if is_play:
print('玩啥?')
else:
print('还想着玩?')
else:
print('不能再喝了!')
else:
print('你已经饱了!')
作业
# 1.女人的年龄>=18并且<22岁并且身高>170并且体重<100并且是漂亮的,那么:表白,否则:叫阿姨好
age = input('Please enter age:') # 输入年龄
age = int(age) # 类型转换
height = input('Please enter height:') # 输入身高
height = int(height) # 类型转换
weight = input('Please enter weight:') # 输入体重
weight = int(weight) # 类型转换
is_beautiful = input('Is beautiful(Yes/No): ') # 若输入的是Yes则代表漂亮输入的是No代表不漂亮
if 22 > age >= 18 and height > 170 and weight < 100 and is_beautiful == 'Yes':
print('表白') # 若条件都满足打印表白
else:
print('阿姨好') # 若条件一个不满足打印阿姨好
# 2.根据用户输入内容打印其权限
# '''
# jason --> 超级管理员
# tom --> 普通管理员
# jack,rain --> 业务主管
# 其他 --> 普通用户
# '''
a = {'jason': '超级管理员'} # 定义字典将Jason设置为超级管理员
b = {'tom': '普通管理员'}
c = {'jack': '业务主管', 'rain': '业务主管'}
name = input('Please your name:') # 定义变量输入名字
if name in a: # 判断名字是否包含在字典a中
print('超级管理员')
elif name in b: # 判断名字是否包含在字典b中
print('普通管理员')
elif name in c: # 判断名字是否包含在字典c中
print('业务主管')
else: # 若名字都不包含则打印输出普通用户
print('普通用户')
# 3.编写用户登录程序
# 要求:有用户黑名单 如果用户名在黑名单内 则拒绝登录
# eg:black_user_list = ['jason','kevin','tony']
# 如果用户名是黑名单以外的用户则允许登录(判断用户名和密码>>>:自定义)
# eg: oscar 123
black_user_list = ['jason', 'kevin', 'tony']
name = input('请输入您的用户名: ')
pwd = input('请输入您的密码: ')
user_name = 'oscar'
user_pwd = '123' # 不同类型的数据值是不能比较的,切记
if name in black_user_list:
print('您的信息不符,拒绝登录!')
elif name == user_name and pwd == user_pwd:
print('登录成功!')
else:
print('您输入的用户名或密码错误,登录失败!')
错误:不同类型的数据值是不能比较的,切记!!!
black_user_list = ['jason', 'kevin', 'tony']
name = input('请输入您的用户名: ')
pwd = input('请输入您的密码: ')
user_name = 'oscar'
user_pwd = 123
user_pwd = int(user_pwd) # 不同类型的数据值是不能比较的
if name in black_user_list:
print('您的信息不符,拒绝登录!')
elif name == user_name and pwd == user_pwd:
print('登录成功!')
else:
print('您输入的用户名或密码错误,登录失败!')
原创文章,作者:kirin,如若转载,请注明出处:https://blog.ytso.com/269438.html