一、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 是终止本次循环,直接进入下一次循环
注意:
1、 continue 一定不要加在循环体最后一步执行的代码后,无意义
2、 continue同级别之后一定不要写代码
# 依次打印 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、值所包含的元素取干净
2、break:即终止本层循环
四、while和for 做比较
1、for 可以不依赖索引,通用的循环取值方式
2、for 的循环次数是由被循环对象包含的值个数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()