IF分支机构续和for循环
IF分支结构续
1. if多分支结构: if - elif - else
问题引入:定义两个变量保存⼀个⼈的身⾼和体重,编程实现判断这个⼈的身材是否正常
公式: 体重(kg)/身⾼(m)的平⽅值 在18.5 ~ 24.9之间属于正常。
# 方法一:普通写法
height = 1.76
weight = 97
result = weight / height ** 2
if 18.5 <= result <= 24.9:
print("正常")
if result < 18.5:
print("偏轻")
if result > 24.9:
print("偏重")
# 方法二:C语言写法
height = 1.76
weight = 97
result = weight / height ** 2
if 18.5 <= result <= 24.9:
print("正常")
else:
if result < 18.5:
print("偏轻")
else:
print("偏重")
# 方法三:Python写法
height = 1.76
weight = 97
result = weight / height ** 2
if 18.5 <= result <= 24.9:
print("正常")
elif result < 18.5:
print("偏瘦")
else:
print("偏重")
-
应用场景:根据不同条件执行不同操作
-
语法:
if 条件语句1:
代码段1
elif 条件语句2:
代码段2
elif 条件语句3:
代码段3…
else:
代码段N -
执行过程:
从上往下依次判断条件语句的结果是否为True,如果为True就执行这个if或者elif对应的代码段,执行完if再判断后面的条件,
也不再执行后面的代码段
else后面的代码只有在前面所有的条件都不满足的时候才会执行。练习:输入成绩,如果输入的
成绩在90分以上(含90分)输出A;
80分-90分(不含90分)输出B;
70分-80分(不含80分)输出C;
60分-70分(不含70分)输出D;
60分以下输出E。grade = float(input("请输入成绩(百分制): ")) if grade > 100 or grade < 0: print("你的输入有误") elif grade >= 90: print("A") elif grade >= 80: print("B") elif grade >= 70: print("C") elif grade >= 60: print("D") else: print("E")
2. if嵌套
练习:输入一个数,如果输入的数是偶数就打印’偶数’, 否则打印奇数。如果这个数能被4整除,还要打印’4的倍数’
num = int(input("请输入一个数: "))
if num % 2 == 0:
if num % 4 == 0:
print(num, "偶数且能够被4整除")
else:
print(num, "是偶数但不能被4整除")
else:
print(num, "是奇数")
for循环
问题引入:打印亚索台词10遍
print("面对疾风吧!")
print("面对疾风吧!")
print("面对疾风吧!")
print("面对疾风吧!")
print("面对疾风吧!")
print("面对疾风吧!")
print("面对疾风吧!")
print("面对疾风吧!")
print("面对疾风吧!")
print("面对疾风吧!") #较为麻烦
for _ in range(10):
print("面对疾风吧!") # 引入循环
1.循环结构 - 让代码重复执行(for循环、while循环)
2.for循环
-
语法
for 变量 in 序列:
循环体1
循环体2
…
循环体N #注意和for保持缩进 -
for、in、冒号 - 固定写法
变量 - 变量名(程序员随便命名)
序列 - 容器型数据类型的数据,例如:字符串、列表、元组、集合、字典、迭代器、生成器、range等
循环体 - 和for保持缩进的一条或者多条语句;需要重复执行的代码 -
执行过程:
让变量去序列中取值,一个一个的取,取完为止,每取一个值执行一次循环体。for x in "abcd": print("hello!") # 打印四遍hello! """ 第一次循环: x = 'a' -> print("hello!") 第二次循环: x = 'b' -> print("hello!") 第三次循环: x = 'c' -> print("hello!") 第四次循环: x = 'd' -> print("hello!") 第五次循环: 序列元素取完,x取不到值,循环结束 """
练习:"++++"打印5次
for x in 'klk01': print('++++') # 打印五遍"++++"
思考:’++++'打印100次
message = '++++' for _ in range(100): print(message) # 打印100遍"++++"
range函数
-
range(N) - 产生[0,N)的数字范围,里面包含:0,1,2,3… N-1 (N>0)
range(M,N) - 产生[M,N) (不写step默认为1) 的数字范围, 里面包含:M,M+1,…N-1 (N>M)
range(M, N, step) - 从M开始每次加step产生下一个数…N取不到
range(1, 10, 2) -> 1, 3, 5, 7, 9
range(10,1,-2)-> 10, 8, 6, 4, 2print(range(10)) # range(0,10) for i in range(10): print(i) # 打印 0,1,2...9
练习:产生数字范围1~100并且打印出来
for i in range(1, 101): print(i)
练习:产生数字范围-100~1并且打印出来
for i in range(-100, 0): print(i)
练习:写程序产生数字: -1, -3, -7, -9
for x in range(-1, -10, -2): print(x)
练习:写程序产生数字:5, 4, 3, 2, 1
for x in range(5, 0, -1): print(x)
练习: 计算1+2+3+…+100的和
注意:
-
sum1 = 0
-
for循环: i 取值范围是 1 到 100
num = 1: sum1 += i -> sum1 = sum1 + i = 0 + 1 = 1
num = 2: sum1 += i -> sum1 = sum1 + i = 1 + 2 = 3
num = 3: sum1 += i -> sum1 = sum1 + i = 3 + 3 = 6
sum1 = 0 for i in range(101): sum1 += print("1+2+3...+100 的和为: ", sum1) # 5050
练习: 求 10 + 20 + 30 +…+100的和
sum1 = 0 for i in range(10, 101, 10): sum1 += i print("10+20+30+...+100的和为: ", sum1)
练习:统计0~100中能被3整除的数的个数
# 普通版 count = 0 for i in range(1, 101): if i % 3 == 0: count += 1 print("1~100能被3整除的个数", count)
# 简化版 count = 0 for i in range(3, 101, 3): count += 1 print("1~100能被3整除的个数", count)
-
while循环
-
语法
while 条件语句:
代码段(循环体) -
说明:
while、冒号 - 固定写法
条件语句 - 任何有结果的表达式都可以(赋值语句不行)
循环体 - 和while保持一个缩进的一条或多条语句;需要重复执行的代码 -
执行过程
不断判断条件语句是否为True,为True就执行循环体,然后再判断.为False就结束循环num = 0 while num < 5: print("=====") num += 1
-
num = 0
-
while循环
第一次: while num < 5 -> while 0<5 while True -> print("="); num+= 1 -> num = 1
第二次: while num < 5 -> while 1<5 while True -> print("="); num+= 1 -> num = 2
第三次: while num < 5 -> while 2<5 while True -> print("="); num+= 1 -> num = 3
第四次: while num < 5 -> while 3<5 while True -> print("="); num+= 1 -> num = 4
第五次: while num < 5 -> while 4<5 while True -> print("====="); num+= 1 -> num = 5
第一次: while num < 5 -> while 5<5 while False -> 循环结束 -
for循环和while循环的选择
循环次数确定就使用for循环;循环次数不确定就使用while循环。练习:不断输入数据,知道输入的内容是0为止
""" 请输入数字:9 请输入数字:100 请输入数字:4 请输入数字:5 请输入数字:0 """ num = '1' while num != '0': num = input("请输入数字(输入0退出): \n") print("你输入的数字为", num)
循环关键字
-
continue
只能出现在循环体中!
continue的作用:直接结束当次循环,直接进入下一次循环的判断for x in range(3): print("猥琐发育,别浪!") continue print("技能不全,撤退!") # 打印三遍猥琐发育,别浪!
-
break
只能出现在循环体中!
break的作用:直接结束整个循环for x in range(3): print("优先攻击输出!") break print("干得漂亮!") # 打印一遍优先攻击输出
例子:输入数字,直到输出0结束程序
# 第一步:while True while True: # 第二步:描述清楚需要重复执行的操作 value = input("请输入数字: ") # 第三步:添加循环结束的条件 if value == '0': break
练习:使用while循环打印1~10
num = 1 while True: if num >= 10: print("数字{},且{}>=10,程序结束".format(num, num)) break else: print("第{}数字为{}".format(num, num)) num += 1
-
else
-
完整的for循环
for 变量 in 序列:
循环体
else:
代码段 -
完整的while循环:
while 条件语句:
循环体
else:
代码段 -
else的存在不影响原来循环体的执行。
当循环自然死亡,else后面的代码段会执行。如果循环是因为遇到break而结束的,else后面的代码不会执行for x in range(3): print(x) if x == 2: break else: print("else中的代码")
练习:判断一个数是否为素数(质数)
2、3、5、7、11、13 -> 质数
4、6 -> 非质数-
for循环版本
num = 2021 for x in range(2, num): if num % x == 0: print(num, "不是质数,它的因数为{}与{}".format(x, num / x)) break else: print(num, "是质数")
-
while循环版本
while x < num: if num % x == 0: print(num, "不是质数,它的因数为{}与{}".format(x, num / x)) break x += 1 else: print(num, "是质数")
-