今日内容概要
-
成员运算
-
身份运算
-
流程控制(重点)
if判断 while循环 for循环
今日内容详细
成员运算
in
判断在...里面
某一个对象包含于另外一个对象则返回True
字符串、列表、元组、字典、集合都支持成员运算
not in
取反
某一个对象没有包含于另外一个对象则返回True
print('a' in 'hello world aaa')
print('hello' in 'hello world aaa')
print('jason' in ['jason', 'egon', 'kevin'])
# 字典参与成员运算 只有key参加 value无法参与
print('jason' in {'name': 'jason', 'pwd': 123})
print('name' in {'name': 'jason', 'pwd': 123})
身份运算
== 仅仅判断值(value)是否相等
is 判断内存地址是否相等(id),相等则返回True
is not 在两个对象的id不同时is not会返回True
l1 = ['jason', 'egon', 'kevin']
l2 = ['jason', 'egon', 'kevin']
# print(id(l1),id(l2))
print(l1 == l2) # True
print(l1 is l2) # False
"""
值相等内存地址不一定相等
内存地址相等值一定相等
id相同,内存地址必定相同,意味着type和value必定相同
value相同type肯定相同,但id可能不同
"""
流程控制
流程控制即控制流程,具体指控制程序的执行流程,而程序的执行流程分为三种结构:顺序结构(之前我们写的代码都是顺序结构)、分支结构(用到if判断)、循环结构(用到while与for)
顺序结构
代码自上而下依次运行(我们之前所写的代码都是顺序结构)
分支结构
代码运行到某个节点之后根据条件的不同执行不同的代码(if判断)
循环结构
代码运行到某个节点之后一直重复执行某一段代码直到结束(while、for)
分支结构
分支结构就是根据条件判断的真假去执行不同分支对应的子代码
"""
必备知识
1.代码缩进
在python中使用缩进来表示代码的从属关系
一般情况下我们采取四个空格来表示缩进(推荐)
并不是所有的代码都可以拥有子代码
截至目前为止只有if可以拥有子代码
同属于一个关键字的子代码必须要保持相同的缩进量
ps:可以简单的记忆遇到冒号下面的代码必缩进
2.条件可以是任意表达式,但执行结果必须为布尔类型
在if判断中所有的数据类型也都会自动转换成布尔类型
2.1、None,0,空(空字符串,空列表,空字典等)三种情况下转换成的布尔值为False
2.2、其余均为True
"""
#1. 如果女孩子的年龄小于30岁 打印小姐姐
girl_age = 58
if girl_age < 30: # if判断
print('小姐姐好')
print('小姐姐好')
print('小姐姐好')
print('小姐姐好')
"""
if 条件:
条件成立之后才会执行的代码
"""
#2. 如果女孩子的年龄小于30岁 打印小姐姐 否则打印认错人了
girl_age = 68
if girl_age < 30:
print('小姐姐好')
else:
print('认错人了')
"""
if 条件:
代码1
代码2
...
else:
代码1
代码2
...
如果条件成立则走if的子代码
如果条件不成立则走else的子代码
"""
#3. 如果女孩子的年龄小于30岁 打印小姐姐 小于40随打印阿姨我不想努力了 小于50岁老宝贝 否则躺平
girl_age = 28
if girl_age < 30:
print('小姐姐')
elif girl_age < 40:
print('阿姨我不想努力了')
elif girl_age < 50:
print('老宝贝')
else:
print('躺平')
"""
if 条件1:
代码1
代码2
...
elif 条件2:
代码1
代码2
...
else:
代码1
代码2
...
条件1成立 执行if的子代码 elif和else都不执行
条件2成立(说明条件1没有成立) 执行elif的子代码 if和else都不执行
如果条件都不成立 则走最后的else子代码 if和elif都不执行
elif可以写多个
"""
分支结构补充
# 条件可以是一个 也可以是多个连接
gender = 'female'
age = 18
height = 165
is_beautiful = True
if gender == 'female' and age < 22 and height > 155 and is_beautiful:
print('吃饭看电影 天黑了')
else:
print('我有事先走了')
# if嵌套
gender = 'female'
age = 18
height = 165
is_beautiful = True
is_success = True
if gender == 'female' and age < 22 and height > 155 oand is_beautiful:
print('能否加个微信认识一下?')
if is_success:
print('吃饭 散步 看电影 交流')
else:
print('你是个好人')
else:
print('我有事先走了')
#1. 成绩评判系统
"""
分数大于90 打印优秀
分数大于80 打印良好
分数大于70 打印一般
分数大于60 打印及格
分数小于60 打印挂科
"""
score = input('score>>>:')
# 暂且先忽略
score = int(score)
if score > 90:
print('优秀')
elif score > 80:
print('良好')
elif score > 70:
print('一般')
elif score > 60:
print('及格')
else:
print('挂科')
# 2.用户登录功能
# 1.获取用户的用户名和密码
username = input('username>>>:')
password = input('password>>>:')
# 2.判断用户名和密码是否正确
if username == 'jason' and password == '123':
print('老板好 来宾三位!')
else:
print('去你妹的')
# 3.根据星期的不同做出不同的动作 周一到周五划水 周六周日躺平
today = input('周几>>>:')
if today in ('一','二','三','四','五'):
print('划水')
elif today in ('六','七'):
print('躺平')
else:
print('见了鬼了')
循环结构
循环结构就是重复执行某段代码块
while True:
# 1.获取用户的用户名和密码
username = input('username>>>:')
password = input('password>>>:')
# 2.判断用户名和密码是否正确
if username == 'jason' and password == '123':
print('登录成功')
else:
print('用户名或密码错误')
"""
while 条件:
循环体代码1
循环体代码2
...
当条件成立的情况下 会依次执行while子代码
子代码运行结束之后再次返回到条件处判断条件是否成立 如果成立继续执行
如果不成立则结束循环
"""
#while+break的使用
while True:
res = input('start>>>:')
while True:
# 1.获取用户的用户名和密码
username = input('username>>>:')
password = input('password>>>:')
# 2.判断用户名和密码是否正确
if username == 'jason' and password == '123':
print('登录成功')
# 结束循环
break # 结束离它最近的一个循环 本层循环
else:
print('用户名或密码错误')
break
#while+continue的使用
#break代表结束本层循环,而continue则用于结束本次循环,直接进入下一次循环
#循环打印1-10 除了数字7
count = 1
while count < 11:
if count == 7:
count += 1
# 跳过本次循环 开始下一次循环
continue
print(count)
# 让count自增1
count += 1
#while+else的使用
#在while循环的后面,我们可以跟else语句,当while循环正常执行完并且中间没有被break 中止的话,就会执行else后面的语句,所以我们可以用else来验证,循环是否正常结束
count = 1
while count < 11:
if count == 7:
break
print(count)
# 让count自增1
count += 1
else:
print('当while没有被break主动结束的情况下自动结束了 则会走else')
循环嵌套
# while循环嵌套+break
#如果while循环嵌套了很多层,要想退出每一层循环则需要在每一层循环都有一个break
while True:
# 1.获取用户的用户名和密码
username = input('username>>>:')
password = input('password>>>:')
# 2.判断用户名和密码是否正确
if username == 'jason' and password == '123':
print('登录成功')
# 循环结构
while True:
command = input('command>>>:')
if command == 'q':
break
print('正在执行您的命令:%s'%command)
break
else:
print('用户名或密码错误')
# 全局标志位
#针对嵌套多层的while循环,如果我们的目的很明确就是要在某一层直接退出所有层的循环,其实有一个窍门,就让所有while循环的条件都用同一个变量,该变量的初始值为True,一旦在某一层将该变量的值改成False,则所有层的循环都结束
flag = True
while flag:
# 1.获取用户的用户名和密码
username = input('username>>>:')
password = input('password>>>:')
# 2.判断用户名和密码是否正确
if username == 'jason' and password == '123':
print('登录成功')
# 循环结构
while flag:
command = input('command>>>:')
if command == 'q':
flag = False
print('正在执行您的命令:%s'%command)
else:
print('用户名或密码错误')
for循环
for循环能够做到的事情while循环都可以做到
但是for循环使用起来比while更加的简单快捷
name_list = ['jason','egon','kevin','tony']
print(len(name_list)) # 4
# 使用while循环将列表中的元素依次打印出来
count = 0
while count < len(name_list):
print(name_list[count])
count += 1
# for循环
for name in name_list:
print(name)
"""
for 变量名 in 可迭代对象: # 看成是 字符串 列表 字典等类型
for循环的循环体代码
变量名如果你真的不知道起什么 一般都是以i、j、item命名
"""
for i in 'hello world': # for循环字符串 将单个单个的字符依次赋值给变量名i
print(i)
for i in {'name':'jason','pwd':123}: # for循环字典 指挥依次拿到字典的key
print(i)
#1. 打印0-10
count = 0
while count < 11:
print(count)
count += 1
for i in range(11): # range简单的看成是一个能够产生一个含有多个元素的列表,range(11)会产生从0-10这11个数
print(i)
for i in range(1,11): # range简单的看成是一个能够产生一个含有多个元素的列表,range(1,11)会产生从1-10这10个数
print(i)
"""
range(起始位置,终止位置)
顾头不顾尾
"""
"""
range
在python3中 类似于是一个老母猪
需要值的时候才会给你 不需要的时候就不给 节省内存
在python2中 直接生成一个列表
不节省内存
xrange(10) 等价于 python3里面的range()
"""
#break 与 continue也可以用于for循环,使用语法同while循环
# break
for i in [1,2,3,4,5,6]:
if i == 4:
break # 结束本层for循环 与while+break一致
print(i)
# continue
for i in [1,2,3,4,5,6]:
if i == 4:
continue # 结束本次for循环 与while+continue一致
print(i)
# else for循环正常结束之后走else 否则不走 与while+else一致
for i in range(5):
if i == 3:
break
print(i)
else:
print('快结束了')
#for循环嵌套
#2. 九九乘法表
for i in range(1, 10):
for j in range(1, i + 1):
print('%s*%s=%s' % (i, j, i * j), end=' ')
print()
#3.金字塔
'''
#max_level=5
* # current_level=1,空格数=4,*号数=1
*** # current_level=2,空格数=3,*号数=3
***** # current_level=3,空格数=2,*号数=5
******* # current_level=4,空格数=1,*号数=7
********* # current_level=5,空格数=0,*号数=9
# 数学表达式
空格数=max_level-current_level
*号数=2*current_level-1
'''
max_level=5
for current_level in range(1,max_level+1):
for i in range(max_level-current_level):
print(' ',end='') #在一行中连续打印多个空格
for j in range(2*current_level-1):
print('*',end='') #在一行中连续打印多个*号
print()
浙公网安备 33010602011771号