流程控制与循环结构

流程控制与循环结构

一 流程控制之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]
posted @ 2020-03-06 07:50  越关山  阅读(281)  评论(0)    收藏  举报