分支、循环(for循环、range函数、while循环)
1.分支
通过昨天的学习,分支结构剩余多分支结构
-
if多分支结构 - 如果xxx就xxx,如果xxx就xxx,如果xxx就xxx,…(根据不同的条件做不一样的事情)
-
方法一:直接多个单分支(多个条件之间不存在’其中一个条件成立,另外的条件不成立’的情况)
if 条件1:
代码段1
if 条件2:
代码段2
if 条件3:
代码段3 -
方法二:使用elif对应的多分支结构(多个条件之间存在’其中一个条件成立,另外的条件不成立’的情况)
if 条件1:
代码段1
elif 条件2:
代码段2
elif 条件3:
代码段3
…
else:
代码段N -
注意:方法二后面的条件是在前面的条件不成立的基础上进行判断的。如果前面的某个条件成立了,后面的条件不会再判断
# 案例:根据百分制分数,给学生打等级:A(大于等于90分)、B([80,90))、C ([60,80)、D(小于60)) """score = input('输入成绩:') score1 = int(score) if score.upper() == 'Q': print('退出程序') if score1 >= 90: print('A') if 80 <= score1 < 90: print('B') if 60 <= score1 < 80: print('C') if score1 < 60: print('D')""" """ while True: score = input('输入成绩:') if score.upper() == 'Q': print('退出程序') break elif int(score) >= 90: print('A') elif 80 <= int(score): print('B') elif 60 <= int(score): print('C') else: print('D')""" # 案例:如果num是偶数打印偶数,如果num能够被3整除打印3的倍数,如果num能够被3整除打印5的倍数 """num = int(input()) if num % 2 == 0: print('偶数') if num % 3 == 0: print('3的倍数') if num % 5 == 0: print('5的倍数')"""
-
-
if嵌套(if分支结构的内部又有分支结构)
# 案例:如果num是偶数就打印偶数,是奇数打印奇数,如果num能被4整除,打印’4的倍数‘ # 3 -> 奇数 # 6 -> 偶数 # 8 -> 偶数、4的倍数 """num = int(input()) if num % 2 == 0: print('偶数') if num % 4 == 0: print('4的倍数') else: print('奇数')"""
2.循环结构
-
循环结构 - 让代码重复执行(代码写一遍,重复执行多次)
for a in range(1, 10): print(a) 输出: 1 2 3 4 5 6 7 8 9 # python实现循环结构的工具:for循环、while循环
-
for循环
语法:
for 变量 in 序列:
循环体说明:
1)for - 关键字,固有写法
2)变量 - 变量名(可以是已经定义过的变量的变量名也可以是没有定义过的变量的变量名)
3)in - 关键字,固有写法
4)序列 - 必须是容器型数据类型的数据,例如:字符串、列表、字典、集合、元组、range、迭代器、生成器等
5): - 固定写法
6)循环体 - 结构上,循环体就是和for保持一个缩进的一条或者多条语句(至少一句!!!!)
逻辑上,就是需要重复执行的代码执行过程:让变量去序列中取值,一个一个的取,取完为止,每取一个值就执行一次循环体
(想要控制for循环的循环次数,只需要控制序列中元素的个数)for x in 'abc': print('hello world!') print(x) print(100) 输出: hello world! a 100 hello world! b 100 hello world! c 100
-
range函数 - 创建等差数列
1)range(N) - 产生[0,N)的等差数列,差是1
例如:range(5) - 0,1,2,3,4
range(6) - 0,1,2,3,4,5
2)range(M, N) - 产生[M, N)的等差数列,差是1
例如:range(5, 10) - 5、6、7、8、9
3)range(M, N, step) - 产生[M, N)的等差数列,差是step
例如:range(10, 20, 2) - 10、12、14、16、18
range(9, 0, -2) - 9、7、5、3、1for qz in range(5): print(qz) 输出: 0 1 2 3 4 for qz in range(5, 10): print(qz) 输出: 5 6 7 8 9 for q in range(9, 0, -2): print(q) 输出: 9 7 5 3 1
3.for的应用
-
累计求和
求和套路:1)准备数据 2)定义变量保存最后的和(变量的默认值是零) 3)通过循环依次获取求和对象,得到一个求和对象就往保存和的变量中加一个
计算1+2+3+…+100的和
num = 0 for q in range(1, 101): num += q print(num) #5050 scores = [28, 34, 78, 90, 89, 96, 76, 99] sum1 = 0 for x in scores: sum1 += x print(sum1) #590 # 练习1:求2+3+4+...+50的和 num1 = 0 for q in range(2, 51): num1 += q print(num1) #1274 # 练习2:求3+6+9+12+...+99的和 num2 = 0 for q in range(3, 100, 3): num2 += q print(num2) #1683 # 练习3:求100以内所有偶数的和 num3 = 0 for q in range(1, 101): if q % 2 == 0: num3 += q print(num3) # # 练习4:求100以内所有能被3整除但是不能被5整除的数的和 #方法一 num4 = 0 for q in range(1, 101): if q % 3 == 0 and q % 5 != 0: num4 += q print(num4) #1368 #方法二 num4 = 0 for q in range(3, 100, 3): if q % 5 != 0: num4 += q print(num4) #1368 # 练习5:已知列表list1,求列表中所有数字的和 list1 = [10, 1.23, 'abc', True, 20, 'mn', None] # 求10+1.23+20 num5 = 0 for q in list1: if type(q) == int or type(q) == float: num5 += q print(num5) #31.23
-
统计个数
1)定义变量保存最后的个数(变量默认值是0)
2)通过循环获取每一个统计对象,获取到一个统计对象,个数就在原来的基础上加1# 案例:统计100以内偶数的个数 count = 0 for x in range(0, 101, 2): count += 1 print(count) # 51 # 统计nums中偶数的个数 nums = [21, 23, 44, 89, 70, 66, 55] count = 0 for x in nums: if x % 2 == 0: count += 1 print(count) # 3 # 练习:统计scores同不及格学生的人数 scores = [99, 80, 67, 55, 40, 81, 72, 51] count = 0 for x in scores: if x < 60: count += 1 print(count) # 3 # 练习:统计nums中个位数大于5的数的个数 nums = [21, 23, 44, 89, 70, 66, 55] count = 0 for x in nums: if x % 10 > 5: count += 1 print(count) # 2
4.while循环
-
while循环
语法:
while 条件语句:
循环体(需要重复执行的代码)
其他代码执行过程:不断判断条件语句是否为True,如果是就执行循环体,如果不是循环直接结束。
(控制次数的方式:保证条件一开始为True,经历过指定次数以后条件会由True变为False)
死循环 - 条件语句一直都是True# 打印数字0、1、2、3、4、5、....、100 x = 0 while x <= 100: print(x) x += 1 输出: 0 1 2 3 4 ... 100
-
for循环和while循环的选择
如果循环次数确定使用for循环;如果循环次数不确定,使用while循环。
循环次数不确定 - 程序员在写代码的时候无法确定(确认)这个循环会重复多少次(次数是由使用程序的用户决定的)
# 提示用户输入密码,直到输入正确为止: password = '156324' value = None while value != password: value = input('请输入密码:') while True: password = int(input('请输入密码:')) if password == 156324: print('密码正确') break else: print('错误请重新输入') while True: 需要执行的代码 if 循环结束条件: break