流程控制语句
一、流程控制
根据代码执行过程的不同,可以将代码分为三种结构:
-
顺序结构(默认):代码从上往下按顺序执行,每条语句只执行一次。
print('魈') print('万叶') print('阿散')
-
分支结构:根据条件选择分支代码进行执行 - if语句
age = 17 if age > 18: print('成年') else: print('未成年')
-
循环结构:代码重复执行 -
for``````while
循环
二、分支结构
分支结构存在的价值:解决程序中’如果···就···'的业务逻辑
-
if
单分支结构 - 条件成立就执行某个操作,条件不成立就不执行解决:如果···就···
语法:
if 条件语句: 代码段
说明:
a.
if
- 固定写法b.
条件语句
- 任何有结果的表达式(一般是判断语句
)c.
:
- 固定语法d. 代码段 - 结构上,和
if
保持一个缩进(tab
键);逻辑上,代码段里面的代码就是满足条件才会执行的代码# 案例: 如果num是偶数就在控制台打印'偶数' num = 10 if num % 2 == 0: print('偶数') # 练习:根据age的值打印'成年' age = 17 if age >= 18: print('成年') # 练习:如果year对应的年份是闰年就打印'闰年' year = 2004 if (year % 400 ==0) or (year % 4 ==0 and year % 100 !=0): print('闰年')
-
if
双分支结构 - 条件成立执行后面的代码,条件不成立执行后续操作解决:如果···就···,否则就···
语法:
''' if 条件语句: 代码段1(条件成立则执行) else: 代码段2(条件不成立则执行) '''
# 练习:根据num的值打印'偶数'或者'奇数' num =34 if num % 2 ==0: print('偶数') else: print('奇数') # 练习:根据year的值打印'闰年'或者'平年' year = 2004 if (year % 400 ==0) or (year % 4 ==0 and year % 100 !=0): print('闰年') else: print('平年')
-
if
多分支结构解决:如果···就···,如果···就···,如果···就···,…,否则就···
''' 方法1 - 每个条件都会判断一次(用于多个条件成立,另外的条件也可能成立的情况) if 条件1: 代码段1 if 条件2: 代码段2 if 条件3: 代码段3 ... 方法2: - 后面的条件是在前面的条件都不成立时判断(用于在多个条件中其中一个条件成立,另外的条件绝对不会成立的情况) if 条件1: 代码段1 elif 条件2: 代码段2 elif 条件3: 代码段3 ... else: 代码段N-1 '''
# 案例:根据百分制的分数值,打印对应的等级:90分以上–A、80多分–B、60多分、70多分–C、60分以下–D score = eval(input('请输入成绩:')) if score >= 90: print('A') elif score >= 80: print('B') elif score >= 60: print('C') else: print('D') # 练习: 根据num的值打印: '奇数' '偶数' '4的倍数' num = eval(input('请输入一个数字:')) # num = 34 if num % 2 == 0: print('偶数') if num % 4 == 0: print('4的倍数') else: print('奇数')
三、循环结构:
1. for
循环
-
for
循环 - 让代码重复执行语法:
for 变量 in 序列 : 循环体
说明:
a.
for
、in
、冒号 - 固定写法b. 变量 - 可以没有定义的变量名,也可以是已经定义过的变量的变量名
c. 序列 - 容器型数据类型的数据,比如:字符串、列表、字典、集合、元组、迭代器、生成器、
range
等d. 循环体 - 结构上,和
for
保持一个缩进的一条或者多条语句(至少一条);逻辑上,循环体就是需要重复执行的代码执行过程:
让变量去序列中取值,一个一个的取,取完为止,每取一个值就执行一次循环体;
for
循环的循环次数由序列中元素的个数决定for i in 'abc': # str print('魈!') # 魈! # 魈! # 魈! for i in [1,2,3,4,5,6]: # list print(i,'你在吗?') # 1 你在吗? # 2 你在吗? # 3 你在吗? # 4 你在吗? # 5 你在吗? # 6 你在吗?
-
range
函数 - 创建等差数列for i in range(100): print('xiao')
''' 1.range(N) - 产生等差数列[0, N),差为1 #range(4):0, 1, 2, 3 2.range(M, N) - 产生等差数列[M, N),差为1 #range(5,8):5, 6, 7 3.range(M, N ,step) - 产生等差数列[M, N),差为step #range(3, 8, 2):3, 5, 7 ; range(6, 2, -3):6, 3 '''
# 练习:使用range函数创建等差数列 for i in range(11): print(i) for i in range(50,60): print(i) for i in range(50,91,10): print(i) for i in range(20,9,-2): print(i)
-
求和和统计个数
- 数据求和
1.定义变量保存结果(最后的和),变量默认值为0
2.利用循环获取每一个求和对象,然后和保存和的变量进行加法运算
3.循环结束后,变量的值就是最后的和# 案例1 求1+2+3+···+100 sum1 = 0 for i in range(1,101): sum1 += i print(sum1) # 案例2 求列表[89, 67, 45, 99, 55, 71, 80, 92]中所有元素的和 nums = [89, 67, 45, 99, 55, 71, 80, 92] sum2 = 0 for i in nums: sum2 += i print(sum2) # 练习 求整数中所有三位数的和 sum3 = 0 for i in range(100,1000): sum3 += i print(sum3) # 练习2 求100以内所有偶数的和 sum4 = 0 for i in range(0,100,2): sum4 += i print(sum4) # 练习3 求nums中所有奇数的和 num5 = 0 nums = [18, 9, 45, 77, 90, 82, 50, 51] for i in nums: if i % 2 == 1: num5 += i print(num5)
- 统计数据个数
- 定义变量保存最后的个数,变量默认值是0
- 利用循环获取到每一个统计对象,取到一个个数就加1
# 案例1 统计num中元素的个数 nums = [19, 34, 78, 89, 22, 15, 55] count = 0 for i in nums: count += 1 print(count) # 案例1 统计num中偶数的个数 nums = [19, 34, 78, 89, 22, 15, 55] count = 0 for i in nums: if i % 2 == 0: count += 1 print(count) # 练习 统计100以内能被3整除的个数 count = 0 for i in range(100): if i % 3 == 0: # for i in range(0,100,3): count += 1 print(count) # 练习2 统计所有水仙花数的个数 count = 0 for i in range(100,1000): if i == (i // 100)**3+(i % 100 // 10)**3 +(i % 10)**3: count += 1 # print(i) print(count)
2. while
循环
-
while
循环语法:
while 条件语句: 循环体
执行过程:
不断判断条件语句是否为True, 若为True执行循环体,为False循环结束。
x = 0 while x < 5: print('魈') x += 1
-
for
和while
的选择问题循环问题优先考虑
for
循环,for
循环解决不了才使用while
循环for
的应用场景:循环次数确定while
的应用场景:循环次数不确定(写代码的时候程序员无法知道循环的次数) -
input
函数 - 输入函数用法:
变量 = input(‘输入提示信息’) - 提示用户输入数据,并将用户输入的数据保存到指定的变量中(输入以回车结束)
name = input('请输入一个名字:') # str print(name) age = input('请输入年龄:') # str age = int(age) # int print(age, age >=18) # 案例:提示用户输入密码,直到输入正确为止 pw = '123456' value = None while pw != value: value = input('请用户输入密码:')
3. break
循环关键字
-
break
-break
是循环关键字,只能在循环体中使用 -
break
的作用:结束整个循环(执行循环体的时候如果遇到
break
,循环直接结束)for i in range(10): if i > 2: break print('hello')
-
while
遇到break
''' while True: 需要重复执行的操作 if 循环结束条件: break '''
pw = '123456' while True: value = input('请用户输入密码:') if value == pw: break # whileTrue是恒成立的循环,当输入密码不正确时,会一直要求输入密码,且没有次数限制,若密码正确,没有break则会继续要求输入密码,从而陷入死循环。