【python】循环结构if、for 、while

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])

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值