1. 分支结构---if
1.1 单项分支
语法:
if 条件:
业务处理1
执行逻辑:
首先对条件进行判断:
条件为True:则进行业务处理1,直接跳出整个if代码块
条件为假:则跳出整个判断,不会执行判断里面的内容
# 案例1:从控制台获取输入的用户名,判断用户名是否为admin,是则输出管理员登录
name = input('please input name:')
if name == 'admin':
print('管理员登录')
print('==========')
1.2 双项分支
语法:
if 条件:
业务处理1
else:
业务处理2
执行逻辑:
首先对条件进行判断:
条件为真:则进行业务处理1,直接跳出整个if代码块 37-40
条件为假:则业务处理2,跳出整个判断
# 案例2:从控制台获取输入的用户名,判断用户名是否为admin,是则输出管理员登录,否则输出游客登录
name = input('please input name:')
if name == 'admin':
print('管理员登录')
else:
print('游客登录')
print('==========')
1.3 多项分支
语法:
if 条件1:
业务处理1
elif 条件2:
业务处理2
elif 条件3:
业务处理3
...
else:
业务处理N
运行逻辑:
首先判断条件1:
条件1为True:进行业务处理1,直接跳出整个if代码块 45-53
条件1为False,则继续判断条件2
条件2为True:进行业务处理2,直接跳出整个if代码块 45-53
条件2为False,,则继续判断条件3
......
上面的所有条件的结果都False的情况下,则会进入else,进行业务处理N,跳出整个判断
# 案例3:年龄大于等于60,就不需要买票;
# 年龄在12-59岁,成人票; # agg>12 and age<59 或者 12<age<59
# 年龄在4-11岁 ,儿童票;
# 年龄0-3岁 ,不要买票。
#第一种写法
age = int(input('please input age:'))
if age >= 60:#条件1
print('老年人,不需要买票')
elif 12 <= age <=59: #条件2判断,前提:条件1为False == age<=59
print('成人票')
elif 4 <= age <=11:#条件3判断,前提:条件2为False == age<=11
print('儿童票')
elif 0 <= age <=3:
print('baby,不要买票')
#第二种写法
age = int(input('please input age:'))
if age >= 60:#条件1
print('老年人,不需要买票')
elif age >= 12 : #条件2判断,前提:条件1为False == age<=59
print('成人票')
elif age >= 4:#条件3判断,前提:条件2为False == age<=11
print('儿童票')
else:
print('baby,不要买票')
print('========')
1.4. 巢状分支 -双项分支的嵌套
语法:
if 条件1:
业务处理1
if 条件2:
业务处理2
else:
业务处理3
else:
业务处理4
执行逻辑:
首先对条件1进行判断:
条件1为真:则进行业务处理1,则继续判断条件2:
条件2为真:则进行业务处理2,直接跳出整个if代码块 ,99-102
条件2为假:则进行业务处理3,直接跳出整个if代码块
条件1为假:则业务处理4,跳出整个判断
# 案例4:从控制台获取输入的用户名和密码,
# 判断如果用户名为admin,并且密码为12345,则输出登录成功,
# 如果密码不是12345,则输出密码错误,如果用户名不是admin,则输出用户名错误
name = input('please input name:')
if name == 'admin':
pwd = input('please input passsword:')
if pwd == '12345':
print('登录成功')
else:
print('密码错误')
else:
print('用户名错误')
print('======')
1.5 if 后的条件
if后的条件使用固定的值:
如数字、字符串、列表、元组、字典、集合等。
其中非0值,非空值(非空字符串、非空列表、非空元组、非空字典、非空集合等) === True
其中0,空值(空字符串、空列表、空元组、空字典、空集合等) === False
# 数字
if 100:
print('这是if下面的执行语句')
else:
print('这是else下面的执行语句')
# 字符串
if '':
print('这是if下面的执行语句')
else:
print('这是else下面的执行语句')
1.7 if后的条件使用运算符
if后的条件使用运算符,主要包括:
比较运算符(> < == >= <=)、
逻辑运算符(and,or,not)、
成员运算符(in,not in) 对于可遍历,可迭代的数据类型(字符串、列表、元组、字典、集合)
# 案例
# 1.'a'是否存在'habbb'中,存在则输出habbb包含a,否则输出habbb不包含a
if 'ha' in 'habbb':
print('在')
else:
print('不在')
# 2.1是否存在(100,3.123,'habbb',(1,2))中,存在则输出元组包含1这个元素,否则输出元组不包含1这个元素
lst = (100,3.123,'habbb',(1,2)) #(1,2)一个整体
if 1 in lst:
print('包含')
else:
print('不包含') #不包含
# 3.'zs'是否包含在{'id':1,'name':'zs','score':100}中,存在则输出字典包含zs,否则输出不包含
d = {'id':1,'name':'zs','score':100}
if 'zs' in d: #'zs' in ('id','name','score')
print('包含')
else:
print('不包含') #不包含
# 对于字典的in的运算,默认判断key是否存在
# zs是否在d的value中间
if 'zs' in d.values(): #'zs' in (1,'zs',100)
print('包含') #包含
else:
print('不包含')
2. while 循环
语法:
while 条件:
循环体(业务处理)
...
...
执行逻辑:
首先判断条件:
条件为真:进入循环体,进行业务处理后,再次判断条件,
如果条件为真,继续重复,
如果条件为假,直接跳出整个循环体
条件为假:直接跳出整个循环体
存在的问题:
死循环
永远进入循环体的循环
while True:
print('循环体')
while False:
print('循环体')
2.1 while后的条件使用固定的值
如数字、字符串、列表、元组、字典、集合等。
其中非0值,非空值(非空字符串、非空列表、非空数组、非空字典、非空集合等) === True
其中0,空值(空字符串、空列表、空数组、空字典、空集合等) === False
while 100:
print('循环体')
while 0:
print('循环体')
2.2 运算符
运算符,主要包括:
比较运算符(> < == >= <=)
逻辑运算符(and,or,not)
成员运算符(in,not in)
while 1 < 2:
print('循环体')
2.3 避免死循环
方式一:
while后面的条件不为恒定值
引入变量,并在内部实现变量的递增或递减
变量与while后面的条件组合
num = 3
while num > 0:
print('hello python')
num -= 1
print('=====')
num = 0
while num < 3:
print('hello python')
num += 1
print('=====')
方式二:while后面的条件为恒定值
引入变量
引入continue和break
添加内部判断条件,结合变量,变量进行递增、递减操作
continue:结束本次循环,继续下次循环
break:结束整个循环
#break
while 1 < 2:
print('循环体')
break
print('======')
#continue
while 1 < 2:
print('循环体')
continue
print('aaaaa')
break+continue控制循环次数
# 案例2:使用break/continue,循环3次,打印出hello python
num = 3
while True:
print('hello python')
num -= 1
if num > 0:
continue
else:
break
num = 0
while True:
print('hello python')
num += 1
if num < 3:
continue
else:
break
3. for循环
语法:
for 变量名 in 可迭代的数据类型:
循环体(业务处理)
运行逻辑:
循环次数:根据可迭代的数据类型的长度来决定的
循环结束:循环次数执行完了之后就结束了
变量名:可以依次获取可迭代数据类型的元素值
作用:
1-循环
2-遍历
for i in 'abc':
print('hello python')
print(i)
# 案例2:for循环,1+2+3+4...+10,输出求和的结果
lst = [1,2,3,4,5,6,7,8,9,10]
res = 0
for i in lst:
res = res + i
print(res)
3.1 for循环遍历
# 案例2:使用for循环,分别遍历字符串、元组、列表、字典
s = 'hello'
lst = [True,'hello',100,[1,2,3]]
tup = (3.14,'python',('muzi','selenium'),[1,2,3])
# 遍历字符串
# 遍历列表
for i in lst:
print(i)
dit = {'id':1001,'name':'zs','class':'v211','score':[80,90,100]}
# 遍历字典,默认获取所有的key
for i in dit:
print(i)
# 思考,如何遍历获取所有的value?如何遍历获取所有的(key,value)
for i in dit:
print(dit[i]) #字典的取值
print(dit.values())
for i in dit.values():
print(i)
print(dit.items())
for i in dit.items():
print(i)
3.2嵌套for循环
for i in 可迭代数据类型1:
for j in i:
print(j)
for i in 'abc':
print(i,'*') #输出*多少次
for j in '123':
print(j,'#') #输出#多少次
print('&') #输出&多少次
# 案例1:获取lst里的每一个数据,并按行输出
lst=[[1,2,3],['a','b','c'],['甲','乙','丙','丁']]
for i in lst:
print(i) #[1, 2, 3]
for j in i:
print(j)
# 案例2:获取dictory里的信息,并且把url的value值, data中嵌套字典的每个value值,按行输出
dictory={'url':'http://www.baidu.com',
'data':{'username':'admin','pwd':'123456'}}
for i in dictory: #'url','data'
# print(i)
if i == 'data': #{'username':'admin','pwd':'123456'} -- dictory['data'].values()
# print(dictory['data'].values())
for j in dictory['data'].values():
print(j)
else:
print(dictory[i])