流程控制与循环结构
流程控制与循环结构
一 流程控制之if条件判断
1 什么是if条件判断
if条件判断是一段代码块,使用一个或多个条件,根据条件判断的结果(True or False),选择执行的子代码块,得出结果。
2 为什么要有if条件判断
为了控制计算机能像人一样去完成判断的过程。
3 如何用if条件判断
3.1 if判断的语法
if 条件1:
子代码块1
elif 条件2:
子代码块2
elif 条件3:
子代码块3
...
else:
子代码块
3.2 if单独使用
if结构中,只有一个if是可以的
inp_name=input('你的名字: ')
if inp_name == "egon":
print('输入正确')
print('其他代码')
3.3 if+elif
inp_name=input("你的名字: ")
if inp_name == "egon":
print("您是super VIP")
elif inp_name == "张三":
print("您是法外狂徒")
elif inp_name == "李四":
print("您是张三的好朋友")
print("其他代码")
3.4 if+else
inp_name = input("你的用户名: ")
inp_pwd = input("你的密码: ")
if inp_name == "zhangsan" and inp_pwd == "123":
print("登录成功")
else:
print("用户名或密码错误,请重新输入正确的用户名和密码")
3.5 if+elif+else
"""
如果:成绩>=90,那么:优秀
如果成绩>=80且<90,那么:良好
如果成绩>=70且<80,那么:普通
其他情况:很差
"""
score = input("请输入您的成绩: ")
score = int(score)
if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 70:
print("普通")
else:
print("很差")
3.6 if判断嵌套if
print("ok0")
if 10 < 3: # 由于结果为False,子代码块不执行
if 1 == 1:
print("ok1")
print("ok2")
print("ok3")
print("ok4") # ok0 ok4
二 循环结构
1 什么是循环
循环就是重复做某件事。
2 为何要有循环结构
为了让计算机能够像人一样能够重复做某件事。
3 如何使用循环结构
python为我们提供了两种使用循环的方法,一个是基础通用的while循环,另一个是在循环遍历取值上有效率优势的for循环。
3.1 while循环
3.1.1 基础语法:
while 条件:
代码1
代码2
...
3.1.2 基本使用案例:
db_name = "egon"
db_pwd = "123"
while True:
inp_name = input("请输入您的用户名: ")
inp_pwd = input("请输入您的密码: ")
if inp_name == db_name and inp_pwd == db_pwd:
print("用户登录成功")
else:
print("用户账号或密码错误")
3.1.3 结束循环的两种方法:
3.1.3.1 把条件改为False:
注意:如果有后续代码需要运行,则修改条件的方法比较好。
tag = Truewhile tag: while tag: while tag: tag = False
db_name = "egon"db_pwd = "123"tag = Truewhile tag: inp_name = input("请输入您的用户名: ") inp_pwd = input("请输入您的密码: ") if inp_name == db_name and inp_pwd == db_pwd: print("用户登录成功") tag = False # 后续代码继续执行,else由于条件不成立,不执行,后续的print代码会执行。 else: print("用户账号或密码错误") print('其他代码')
3.1.3.2 break:直接终止本层循环
while True: # 外层 while True: # 中层 while True: # 内层 break # 内层循环终止 break # 中层循环终止 break # 外层循环终止
db_name = "egon"db_pwd = "123"while True: inp_name = input("请输入您的用户名: ") inp_pwd = input("请输入您的密码: ") if inp_name == db_name and inp_pwd == db_pwd: print("用户登录成功") break # 终止本层while循环,后续代码不再运行 else: print("用户账号或密码错误") print('其他代码')
3.1.4 死循环与效率问题
使用while循环时,如果条件不变,循环就会无限执行下去,即成为死循环。
①如果循环仅仅时执行代码,并不会对计算机 造成太大负担。
while True: name = input('用户名:') pwd = input('密码:') print(name,pwd)
②如果循环是重复计算,一直进行运算会造成CPU过载。
while True: 1+1
3.1.5 while+continue:终止本次循环
(1)不要在continue后写统计代码,不会运行。
count = 0while count <6: # 5 < 6 if count == 3 or count == 4: count += 1 continue # count += 1 # 不要写在这里,不会被执行 print(count) count += 1
(2)如果不想执行本次循环之后的代码,可以用continue,但本次循环如果没有需要运行的代码,就没必要加continue。
db_name = "egon"db_pwd = "123"while True: inp_name = input("请输入您的用户名: ") inp_pwd = input("请输入您的密码: ") if inp_name == db_name and inp_pwd == db_pwd: print("用户登录成功") break else: print("用户账号或密码错误") # continue
3.1.6 while+else:
while循环正常死亡后运行else。
count = 0while count < 6: print(count) if count == 3: break # break之后,后续代码不再执行 count += 1else: print("此段代码会在while循环正常死亡后运行")
3.1.7 while循环嵌套
while循环可以嵌套while循环,同样,打破循环的方法还是break和修改条件的方式。
①使用break打破循环
db_name = "J20"db_pwd = "20110111"while True: inp_name = input("请输入您的账号:").strip() inp_pwd = input("请输入您的密码:").strip() if inp_name = db_name and inp_pwd = db_pwd: print("用户%s登陆成功!" %(db_name)) while True: print(""" 0 退出 1 取款 2 转账 3 提现 """) cmd = input("请输入命令:").strip() if cmd == "0": break elif cmd == "1": print("正在取款") elif cmd == "2": print("正在转账") elif cmd == "3": print("正在提现") else: print("不存在的指令,请重新输入!") break else: print("用户名或密码错误")
②修改条件打破循环
db_name = "J20"db_pwd = "20110111"tag = Truewhile tag: inp_name = input("请输入您的账号:").strip() inp_pwd = input("请输入您的密码:").strip() if inp_name == db_name and inp_pwd == db_pwd: print("用户%s登陆成功!" %(db_name)) while tag: print(""" 0 退出 1 取款 2 转账 3 提现 """) cmd = input("请输入命令:").strip() if cmd == "0": tag = False elif cmd == "1": print("正在取款") elif cmd == "2": print("正在转账") elif cmd == "2": print("正在提现") else: print("不存在的指令,请重新输入!") else: print("用户名或密码错误")
3.2 for循环
3.2.1 用途:
①for循环主要用于循环取值,例如列表、字典、字符串等。
②for循环的次数取决于值的个数;while循环的次数取决于条件什么时候变为False或者什么时候执行break。
3.2.2 基本使用
l = [111, 222, 333, 444, 555]# 使用while循环取值i = 0while i < len(l): print(l[i]) i += 1# 使用for循环for x in l: print(x) d = {"k1": 111, "k2": 222, "k3": 333}for k in d: print(k, d[k]) # 取出的是字典的key msg = "hello"for s in msg: print(x) l = [["aaa": 1111], ["bbb", 2222], ["ccc", 3333]]for x, y in l: # 解压赋值的操作,x, y = ["aaa", 1111] print(x, y)
3.2.3 for+break
for x in [111, 222, 333, 444, 555]: if x == 333: break # 取值到333结束循环取值 print(x)
3.2.4 for+continue
for x in [111, 222, 333, 444, 555]: if x == 333: continue print(x)
3.2.5 for+else
for x in [111, 222, 333, 444, 555]: if x == 333: break print(x)else: print("======>") # for循环结束后继续运行其他代码
3.2.6 for+range及循换嵌套
(1) for循环可以嵌套使用
for i in range(3): # range,取值范围为左闭右开 print("外层循环第%s次" % i) for j in range(2): print("===>>>内层循环第%s次" % j)# 输出结果如下:外层循环第0次===>>>内层循环第0次===>>>内层循环第1次外层循环第1次===>>>内层循环第0次===>>>内层循环第1次外层循环第2次===>>>内层循环第0次===>>>内层循环第1次
(2) 使用while循环打印多个值时,操作会稍显繁琐:
count = 0while count < 3: print("=" * 10) print("Step 1") print("Step 2") count += 1 # 实现将内容循环打印多次
(3) 使用for循环可以更简单的实现这个操作:
for x in "a" * 3: # in后面跟一个有多个元素的字符串或者容器类型的数据,可以实现与元素数相同的循环次数 print("=" * 10) print("Step 1") print("Step 2")
(4) 使用range()可以制造一个列表,更方便for循环进行取值:
range(start, stop[, step]) -> range object# 起始位置 结束位置 步长 range()制造的列表是左闭右开的区间,注意末尾数据不能取到!!>>> range(1,5,2) # 起始位置,结束位置,步长[1, 3]>>>>>> range(1,5) # 省略步长,默认为1[1, 2, 3, 4]range(stop) -> range object>>> range(5) # 省略起始位置与步长,默认起始位置为0,步长为1[0, 1, 2, 3, 4]

浙公网安备 33010602011771号