Python-流程控制之 if & while & for

一、if判断

1、if 判断的完整语法

# 代码自上而下依次运行,如果条件成立,则不会运行该条件下的子代码,同理,只有前面的条件在不成立的情况下才会到达下一个判断,要注意代码的简洁性
if 条件1:
    pass
elif 条件2:
    pass
elif 条件3:
    pass
else:
    pass
print('other=========>')

2、if 单分支

if 条件1:
    pass
# 案例
age=22
height=170
weight=100
gender="female"

print("start...")

if 18 < age < 28 and height > 160 and gender == "female":
    print("开始表白。。。")

print('end...')

3、if 双分支

if 条件1:
    pass
elif:
    pass
# 或者
if 条件1:
    pass
else:
   pass
# 案例
age=30
height=170
weight=100
gender="female"

print("start...")

if 18 < age < 28 and height > 160 and gender == "female":
    print("开始表白。。。")
else:
    print("阿姨好。。。")

print('end...')

4、if 多分支

if 条件1:
    pass
elif 条件2:
    pass
elif 条件3:
    pass
else:
    pass
# 案例
"""
如果:成绩>=90,那么:优秀
如果成绩>=80且<90,那么:良好
如果成绩>=70且<80,那么:普通
其他情况:很差
"""

score = input("your score: ")  # score="99"
score = int(score)

if score >= 90:
    print("优秀")
elif score >= 80:
    print("良好")
elif score >= 70:
    print("普通")
else:
    print("很差")

5、if 判断嵌套

# 案例
age=18
height=170
weight=100
gender="female"
is_ok=True

print("start...")

if 16 < age < 26 and height > 160 and gender == "female":
    print("开始表白。。。")
    if is_ok:
        print("在一起。。。")
    else:
        print("我们不太合适。。。")
else:
    print("阿姨好。。。")

print('end...')

6、if 练习题

# 1、写一个简单的用户登录验证功能

# 2、要求如下:
'''
如果:今天是Monday,那么:上班
如果:今天是Tuesday,那么:上班
如果:今天是Wednesday,那么:上班
如果:今天是Thursday,那么:上班
如果:今天是Friday,那么:上班
如果:今天是Saturday,那么:出去浪
如果:今天是Sunday,那么:出去浪
'''

二、while循环(条件循环)

1、while循环的语法

# 条件为真的时候,运行循环体代码;条件为假的时候,结束循环
while 条件:
        code1
        code2
        code3
        ......

2、while + break结束循环

break 是终止当前层循环,执行其他代码

# 下面是个死循环,要求当 n=5 的时候结束掉循环
n = 0
while True:
    if n == 5:
        break
    print(n)
    n += 1

3、while + continue结束循环

continue 是终止本次循环,直接进入下一次循环

注意:
1continue 一定不要加在循环体最后一步执行的代码后,无意义
2continue同级别之后一定不要写代码
# 依次打印 1-9 ,其中 6 不打印
x = 1
while x <= 9:
    if x == 6:
        x += 1
        continue
    print(x)
    x += 1

4、while + else

else 的代码在 while 循环没有被 break 打断的情况下运行

n = 0
while n < 10:
    print(n)
    n += 1
else:       # 此时的 else 前面的循环没有 break 打断,在循环结束后会运行 else 的代码
print('======>')
n = 0
while n < 10:
    if n == 7:
        break
    print(n)
    n += 1
else:       # 此时的 else 前面的循环被 break 打断了,则不会运行 else 的代码
print('======>')
n = 0
while n < 10:
    if n == 7:
        n += 1
        continue
    print(n)
    n += 1
else:       # 此时的 else 前面的循环也没有被 break 打断,而是 continue 跳过本次循环,等循环整体结束后,也会运行 else 的代码
print('======>')

5、结束while循环的两种方式

方式1、正常的通过把 while 的条件变为 False 去结束循环,这个时候如果是 while + else 则会运行 else 的代码
方式2、异常的通过 break 强制把 while 循环结束掉,这个时候如果是 while + else 则不会运行 else 的代码
# 区别是:break会立即终止本层循环,而方式1需要等到下一次循环判断条件时才会生效

# 示例
while 条件1:
    while 条件2:
        while 条件3:
            break
        break
    break

tag = True
while tag:
    while tag:
        while tag:
            tag = False

三、for循环(迭代循环)

通常用来取值,可以不依赖索引取值

1、for循环语法

# 示例1
names = ['egon','lhw','zxl','zsx','ytk']
for name in names:
    print(name)
    
# 示例2
info = {'name':'zxl','age':24,'gender':'male'}
for x in info:  # for循环字典类型的时候,拿到的是key,然后通过key取value
    print(x,info[x])

 # 示例3
l = [['name', 'zxl'], ['age', 18], ['gender', 'male']]
for x, y in l:  # x, y = ['name', 'zxl']解压赋值
    print('key is %s, value is %s' % (x, y))
    
# 示例4
info = [{'name': 'zxl'}, {'age': 18}, {'gender': 'male'}]
for i in info:
    print(x)
    for k in i:
        print(i[k])

2、for + break

names = ["egon", "lili", 'jack', "tom", "rose"]
for x in names:
    if x == "lili":
        break       # name = lili 则终止循环
    print(x)

3、for + continue

names = ["egon", "lili", 'jack', "tom", "rose"]
for x in names:
    if x == "lili":
        continue        # name = lili 则结束本次循环,进入下一次
    print(x)

4、for + else

else 的代码在 for 循环没有被 break 打断的情况下运行

# 示例1
names = ["egon", "lili", 'jack', "tom", "rose"]
for x in names:
    if x == "lili":
        break
    print(x)
else:
    print('=============>')  # 不会打印
    
# 示例2
names = ["egon", "lili", 'jack', "tom", "rose"]
for x in names:
    if x == "lili":
        continue
    print(x)
else:
    print('=============>')  # 会打印

5、for + range()

顾头不顾尾,可指定步长,默认为1 range(起始位置,结束位置,步长)

1、在python2中,range()以列表形式存值;在python3中range()以老母鸡形式存值。如
    # 在 python2 中
    >>> print(range(0,5))
    [0, 1, 2, 3, 4]
    >>>
    # 在 python3 中
    >>> print(range(0,5))
    range(0, 5)
    >>>

2、指定步长
    # 在 python2 中
    >>> print(range(5,0,-2))
    [5, 3, 1]
    >>>
    # 在 python3 中
    >>> print(range(0,5,2))
    range(0, 5, 2)
    >>>

6、for + ennmerate(列表)

# 一般 for 遍历一个列表,默认取到的是列表内的值,配合 enumerate 可以取出索引以及值
for i,item in enumerate(列表):
	i,item
# 示例
l1 = [1, 2, 3, 4, 5]
for i, item in enumerate(l1):
    print(i, item)
    # 输出结果
    0 1  # 索引 值
    1 2
    2 3
    3 4
    4 5

7、结束for循环的两种方法

1、值所包含的元素取干净
2break:即终止本层循环

四、while和for 做比较

1for 可以不依赖索引,通用的循环取值方式
2for 的循环次数是由被循环对象包含的值个数len()决定的,而while循环次数是由条件决定的

五、练习题

1、经典案例(while+continue+break+if嵌套)

# 猜年龄游戏
# 有三次输入机会,三次失败后选择 Y/N 是否重新游戏
db_age = 24
count = 0
tag = True
while tag:    
    if count == 3:        
        print('游戏次数用完了,重新开始输入Y,结束游戏N')        
        option = input('请选择Y or N:').strip()       
        if option == 'Y' or option == 'y':
            count = 0            
            continue       
        elif option == 'N' or option == 'n':  
            print('游戏结束')          
            break       
        else:           
            print('请输入正确的选项') 
    age = input('请输入你的年龄:').strip()
    if age.isdigit():        
        age = int(age)        
        if age < 24:           
            print('太年轻了,请重新输入')          
            count += 1     
        elif age > 24:         
            print('太老了,请重新输入')          
            count += 1       
        else:          
            print('恭喜你,猜对了')            
            tag = False   
    else:
        print('请输入正确的年龄格式')

2、登录验证(三次机会后重试)

db_user = 'zxl'
db_pwd = '123'
count = 0
tag = True
while tag:   
    if count == 3:   
        print('错误次数过多,系统已禁止登录')      
        break    
    username = input("请输入你的用户名:").strip()    
    password = input("请输入你的密码:").strip()    
    if username == db_user and password == db_pwd:     
        print('登录成功')       
        tag = False  
    else:      
        print('登录失败')      
        print('用户名或密码错误,请重新输入')       
        count += 1

3、for 循环打印九九乘法表

# 思路:外循环一次就换行打印,内循环结束才换行打印
for x in range(1, 10):
	for y in range(1, x+1):
        print('%s*%s=%s ' % (y,x,x*y),end='')
	print()

4、for循环打印金字塔

# 思路:假设总共有5层,金字塔第一层,有4个空格,有1个*;第二层有3个空格,3个*;第三层有2个空格,有5个*;第四层有1个空格,有7个*;第五层有0个空格,有9个*
max_level = 5
for current_level in range(1, max_level + 1):  # 总体是按照层数打印的,所以先循环层数
    for space in range(max_level - current_level):
        print(' ', end='')
    for stars in range(2 * current_level - 1):
        print('*', end='')
    print()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值