Python 流程控制 & 循环结构

流程控制

三大结构:
(1)顺序结构: 默认代码从上到下,依次执行
(2)分支结构: 单项分支 双向分支 多项分支 巢状分支
(3)循环结构: while / for

 

单项分支

语法:

if 条件表达式:
    code1
    code2


范例:

zhiye = "程序员"
if zhiye == "程序员":
    print("我是程序员")

 

双向分支 (二选一)

语法:

if 条件表达式:
    code1  ..
else:
    code2 ... 


范例:

zhiye = "美团外卖骑手"
zhiye = "律师"
if zhiye == "美团外卖骑手":
    print("送外卖")
else:
    print("给你一朵红花")

 


input 等待用户输入字符串 

注意:结果一定是字符串

name = input("你好~ 贵姓~")
print(name , type(name))


多项分支 (多选一)

语法:

if 条件表达式1:
    code1 
elif 条件表达式2:
    code2
elif 条件表达式3:
    code3
else:
    code4

注意:

elif 可以是0个 或者 多个
else 可以是0个 或者 一个

 

范例:

youqian = False
youfang = False
youche = False
if youqian == True:
    print("说明这个人很有实力")
elif youfang == True:
    print("能交给朋友么")
elif youche == True:
    print("开了雅迪艾玛调动车,我们碰一碰吧")    
else:
    print("你还是去做美团骑手吧")

 

巢状分支

单项分支,双向分支,多项分支的互相嵌套组合

youqian = True
youfang = True
youche = True
youyanzhi = True
youtili = False

if youqian == True:
    if youfang == True:
        if youche == True:
            if youyanzhi == True:
                if youtili == True:
                    print("我要嫁给你~")
                else:
                    print("你去吃点大腰子再来~")
            else:    
                print("你去一下泰国+韩国,整整容")
else:
    print("你是个好人呐~")

 

python特有

height = float(input("请输入您的身高:"))
if 1 <= height < 1.5:
    print("小强 你在哪里?")
elif 1.5 <= height < 1.7:
    print("没有安全感~")
elif 1.7 <= height < 1.8:
    print("帅哥 留个电话")
elif 1.8 <= height < 2:
    print("你建议多一个女朋友吗")
else:
    print("抱歉,没有合适的选项")


通用写法

height = float(input("请输入您的身高:"))
if 1 <= height and height < 1.5:
    print("小强 你在哪里?")
elif 1.5 <= height and height < 1.7:
    print("没有安全感~")
elif 1.7 <= height and height < 1.8:
    print("帅哥 留个电话")
elif 1.8 <= height and height < 2:
    print("你建议多一个女朋友吗")
else:
    print("抱歉,没有合适的选项")


循环结构

特点:减少冗余代码,提升执行效率

语法:

while 条件表达式:
    code1

(1) 初始化一个变量
(2) 写上循环的条件
(3) 自增自减的值


打印1 ~ 100

i = 1
while i <= 100:
    print(i)
    i += 1 # 等价于 i = i + 1

 


1 ~ 100的累加和

i = 1
total = 0
while i <= 100 :
    total += i
    i += 1
print(total)

 

死循环

while True:
    print(1)

 

用死循环的方法实现 1 ~ 100累加和

i = 1
total = 0
sign = True
while sign:
    total += i
    i+=1
    if i == 101:
        sign = False
print(total)

 

关键字的使用  pass、break、continue

pass 

代码块中的占位符

if 20 == 20:
    pass
    
while True:
    pass


break 

终止当前循环,只能用在循环之中

i = 1
while i <= 10:
    print(i)
    if i == 5:
        break
    i +=1


continue 

跳过当前循环,从下一次循环开始

i = 1
while i <= 10:    
    if i == 5:
        i += 1
        continue
    print(i)
    i +=1

 

  
1 ~ 100 打印所有不含有4的数字
方法一

i = 1
while i <= 100:
    strvar = str(i)
    # print(strvar)
    if "4" in strvar:
        i += 1
        continue
    print(i)
    i +=1


方法二

i = 1
while i <= 100:
    if i // 10 == 4 or i % 10 == 4:
        i+=1
        continue
    print(i)
    i+=1

    
    
for循环

遍历 循环 迭代 , 把容器中的元素一个一个获取出来
while循环在遍历数据时的局限性


for循环的基本语法

Iterable 可迭代性数据:1.容器类型数据 2.range对象 3.迭代器

for 变量 in Iterable:
    code1

 

范例:

# 字符串
container = "北京和深圳温差大概20多度"
# 列表
container = [1,2,3,4,4,5]
# 元组
container = ("孙大圣","孙二圣","孙悟空")
# 集合 
container = {"张三","李四","王麻子","赵四","马六"}
# 字典
container = {"m1":"马大哥","m2":"马二哥","m3":"马三哥","m4":"马四哥","m5":"马五哥"}

# 遍历数据
for i in container:
    print(i)

    

    
遍历不等长多级容器

container = [1,2,3,4,("嗄","234",{"马哥","小马哥","大马哥"})]
for i in container:
    # 判断当前元素是否是容器,如果是,进行二次遍历,如果不是,直接打印
    if isinstance(i,tuple):
        for j in i:
            # 判断当前元素是否是集合,如果是,进行三次遍历,如果不是,直接打印
            if isinstance(j,set):
                for k in j :
                    print(k)
            else:
                print(j)
    # 打印数据
    else:
        print(i)

        
遍历不等长多级容器

container = [("张三","李四","王麻子"), ("北京","上海"),("魔都",)]
for i in container:
    for j in i:
        print(j)

 

遍历等长的容器

container = [("马哥","小马哥","大马哥") , ["王健林","王思聪","王志国"],{"王宝强","马蓉","宋小宝"}]
for a,b,c in container:
    print(a,b,c)

    
变量的解包

a,b,c = "poi"
a,b = (1,2)
a,b = 1,2
a,b,c = [10,11,12]
a,b = {"张三","李四"}
a,b = {"zs":"张三","ls":"李四"}
a,b,c = ("马哥","小马哥","大马哥")
print(a,b,c)

 

range对象

range([开始值,]结束值[,步长])
取头舍尾,结束值本身获取不到,获取到它之前的那一个数据


range(一个值)

for i in range(5): # 0 ~ 4
    print(i)

 

range(二个值)

for i in range(3,8): # 3 4 5 6 7 
    print(i)

 

range(三个值) 正向的从左到右

for i in range(1,11,3): # 1 4 7 10 
    print(i)

 

range(三个值) 逆向的从右到左

for i in range(10,0,-1): # 10 9 8 7 ... 1 
    print(i)


循环总结:

while 一般用于处理复杂的逻辑关系
for   一般用于迭代数据
部分情况下两个循环可以互相转换;

 

posted @ 2022-11-09 16:02  屠魔的少年  阅读(6)  评论(0)    收藏  举报