Python分支结构循环结构
顺序结构按顺序一条一条语句向下执行分支结构选择结构产生两个分支或者多个分支而且只执行其中一个循环结构程序中控制某条或者某段指令重复执行的结构文章目录if-elif-else分支结构*match-case分支结构for-in循环结构while循环常用快捷键、函数if-elif-else分支结构关键字if、elif、elseif 关键字后加关系运算表达式产生bool值如果为 True if 下方的语句会被执行通过缩进控制否则执行其他代码如 elif 或者 else 里面的。python 中可以只用 if 而不加 else。python中的判断条件如果 a b, b cpythonic写法a b c1.计算BMI判断体重情况h float(input(输入身高(cm))) w float(input(输入体重(kg))) bmi w / (h / 100) ** 2 if bmi 18.5: print(f你的bmi为{bmi :.2f},体重过轻) elif bmi 24: # 隐含条件 bmi 已经 18.5 print(f你的bmi为{bmi :.2f},体重刚好) elif bmi 27: print(f你的bmi为{bmi :.2f},体重过重) else: print(f你的bmi为{bmi :.2f},肥胖)注意代码需要扁平化代码嵌套层次越多越混乱避免嵌套太深2.输入年份判断是否是闰年year int(input(请输入1582年之后的年份)) if year 1582: # b (bool(year % 4 0) and bool(year % 100 ! 0)) or bool(year % 400 0) # if b: # 默认b为真1 if year % 4 0 and year % 100 ! 0 or year % 400 0: print(f{year}年是闰年) else: print(f{year}年不是闰年) else: print(f{year}年份输入错误)3.分段函数求值x float(input(x )) if x -1: y 5 * x 3 elif x 1: y x 2 else: y 3 * x -5 print(fy {y})注意分支语句中不要把统一输出结果分别放在分支中。4.输入三边长判断是否能够构成三角形并计算周长和面积import math # mathpython内置模块数学运算函数 # a float(input(a )) # b float(input(b )) # c float(input(c )) a, b, c map(float, input(请输入三边长 ).split()) # .split() 默认按空格拆分.split(,) 按 , 拆分 ---- 拆分结果是字符串类型 # map: 做映射做映射实现将split()拆分后的结果映射成 float 类型 if a b c and b c a and c a b: # 任意两边之和大于第三边即三个条件都需要满足 z a b c p z / 2 s math.sqrt(p * (p - a) * (p - b) * (p - c)) print(f三角形周长为{z}, 面积为{s :.2f}) else: print(不能构成三角形)*match-case分支结构python3.10及以上版本可以通过 match-case 语句构造分支结构integera int(input(a )) match a: case 1: b one case 2 | 20: b two # | 运算符可将多个分支合并到同一个分支中 case 3: b three case _: b stop print(数字描述, d)case _: 通配符如果前面没匹配上就会执行 case _ 里面的。通配符语句可选并非每种match-case语句都需要但是只要一有通配符 case _ 必须将其放在最后否则它之后的语句不会执行。局限性case后面的值固定只能做等值判断for-in循环结构range(1, 26) #构造1~26默认跨度1 range(0, 26, 2) #构造1~26,跨步2(偶数) range(1, 26, 2) #构造1~26,跨步2(奇数) range(26, 1, -2) #构造26~1,跨步2倒着数需要负数步长for in构造循环结构import time for i in range(0, 3600): # range构造一个范围0~3599[0, 3600)左闭右开 # 循环执行体 # 若循环执行体中未用到循环变量i, 按编程惯例(idiom)用_命名循环变量即for _ in range(0, 3600) print(f{i}次hello, world) time.sleep(0.1) # 单位:s 可以输入小数 0.1 即100ms计算从1加到100# s 0 # for i in range(1,101): # s i # if i 100: # print(f{s}) # 优化 s 0 for i in range(1,101): s i print(f{s}) # 此句不在循环体中执行只运行1次 # print(sum(range(1, 101))) # sum,range保留字while循环while 条件: 循环体后续代码如1到100求和s 0 i 0 while i 100: s i i 1 print(f{s})for in 循环事先知道循环次数while循环事先不知道循环次数用变量控制循环是否继续循环体可能一次都不执行也可能执行一次或者很多次猜数字游戏电脑随机产生一个数用户输入一个数猜是否正确不知道循环次数用while循环import random a random.randrange(1,101) b int(input(Please input b )) i 1 while b a: print(大一点) b int(input(请重新输入b )) i 1 while b a: print(小一点) b int(input(请重新输入b )) i 1 if i 7: print(f共计{i}次猜对) else: print(f有点呆)优化import random c random.randrange(1, 101) d int(input(Please input d )) # 用bool类型的变量来控制循环 gamer_over False # 假设游戏没有结束 j 0 # 统计次数 while not gamer_over: # 假设游戏结束了,用not not False即True # while True: j 1 if d c: print(小一点) d int(input(请重新输入d )) elif d c: print(大一点) d int(input(请重新输入d )) else: gamer_over True # 用Ture时游戏结束时会进入死循环故需要用break终止循环否则猜对后一直停在这里 break # 用not False时游戏结束时会跳出循环可以不用break终止循环 print(f对了共猜{j}次if j 7 else f猜对了但有点呆)再次优化import random a random.randrange(1,101) # 模块名.函数名() # 上两排导入模块和函数的方法可以用以下方式 # from random import randrange # a randrange(1, 101) i 0 while True: i 1 b int(input(Please input b )) if b a: print(输入数字请大一点) elif b a: print(输入数字请小一点) else: print(猜对了) break if i 7: print(f有点呆) # 当某段代码前面出现了死循环这段代码背景会变高亮提示this code is unreachable这段代码不可达常用快捷键、函数alt shift ↑ 代码上移alt shift ↓ 代码下移random 生成随机数random.randrange(1,101) 生成[0, 100]范围内的随机数