一、流程控制
1、定义:通过代码控制程序的执行过程
2、控制过程:
顺序结构:代码重上往下按顺序执行,而且每条语句只执行一次(默认)
分支结构:执行代码时根据条件选择执行代码(if)
循环结构:让代码重复执行(for、while)
二、分支结构
1、if单分支结构:
如果xx就xx(满足条件就执行某个操作,条件不满足的时候这个操作就不执行)
(1)语法:
if 条件语句:
代码块
(2)说明:
“if”:关键字,固定写法
“ 条件语句”:一般写判断语句,本质上可以写任何有结果的表达式
“ :”:固定写法
“代码块”:结构上,是和if保持一个缩进的一条或多条语句(至少一条)
结构上,代码块就是满足条件才执行的代码
# 案例
num = 289
if num % 2 == 0:
print('偶数')
# 练习:1:如果一个三位数的个位数和百位数相等就打印"回文数"
num = 820
if num // 100 == num % 10:
print('回文数')
# 练习2:根据年份在控制台打印"闰年"
year = 2009
if year % 400 == 0 or year % 100 != 0:
print('year是闰年')
2、if双分支结构
如果xx就xx否则就xx(满足条件执行某个操作,条件不满足就执行另外的操作)
语法:
if 条件语句:
代码块1(满足条件时需要执行的代码)
else:
代码块2(不满足条件时需要执行的代码)
# 案例1:根据num的值打印“偶数”或者“奇数”
num = 666
# 方法1
if num % 2 == 0:
print('num是偶数')
else:
print('num是奇数')
# 方法2
if num % 2:
print('num是偶数')
else:
print('num是奇数')
# 案例2:根据变量x中的数据的类型打印“数字数据”或者“非数字数据”
x = 'xiao'
# 方法1
if type(x) == int or type(x) == float:
print('数字数据')
else:
print('非数字数据')
# 方法2
if tpye(x) in (int,float):
print('数字数据')
else:
print('非数字数据')
3、 if多分枝结构
如果xx就xx,如果xx就xx,如果xx就xx,。。。否则就xx(根据不同条件做不同的事情)
(1)多个if单分支结构(多个条件之间,一个条件成立其他的条件也成立)
if 条件1:
代码块1
if条件2:
代码块2
......
if条件N:
代码块N
# 案例:根据分数值打印:优秀(>=90)、良好(>=80,<90)、中等(>=60,<80)、不及格(<60))
score = 99
if score >= 90:
print('优秀')
if score >= 80 and score <90:
print('良好')
if score >= 60 and score <80:
print('中等')
if score < 60:
print('不及格')
(2)if-else结构(多个条件之间存在,有一个条件成立,其他条件绝对不会成立)
if条件1:
代码块1
else条件2:
代码块2
else条件3:
代码块3
......
else:
代码块N
# 案例:根据分数值打印:优秀(>=90)、良好(>=80,<90)、中等(>=60,<80)、不及格(<60))
score = 99
if score >= 90:
print('优秀')
elif score >= 80:
print('良好')
elif score >= 60:
print('中等')
elif score < 60:
print('不及格')
else:
print('出错了!')
4、分支嵌套:
# 案例:根据num的值打印"偶数"、"奇数"和"4倍数"
num = 34
if num % 2 == 0:
print('偶数')
if num % 4 == 0:
print('4倍数')
else:
print('奇数')
三、循环结构(for、while)
功能:让代码重复执行
1、for循环
(1)语法:
for 变量 in 序列:
循环体
(2)说明:
“for”:关键字;固定写法
“变量”:变量名(已经定义过的变量或者没有定义的变量都可以)
“in”:关键字;固定写法
“序列”:容器型数据类型,例如:字符串、列表、字典、元组、集合、迭代器、生 成器、range
“:”:固定写法,必须英文
“循环体”:结构上,就是和for保持一个缩进的一条或多条语句(至少一条)
逻辑上,循环体就是需要重复执行的代码
(3)循环原理:
让变量去序列中按顺序取值,一个一个的取,取完为止,每取一次就执行一次循环体
如果要控制循环的次数,只需要控制序列中元素的个数
# 控制程序打印5次'hello world!'
for x in 'abcde':
print('hello world!')
2、range函数(创建容器)
(1)range(N):创建(0,N]的等差数列,差是1
例如:range(5) - 0、1、2、3、4
(2)range(M,N):创建[M,N]的等差数列,差是1
例如:range(5,11) - 5、6、7、8、9、10
(3)range(M,N,step):创建[M,N]的等差数列,差是step
例如:range(2,11,2) - 2、4、6、8、10
# 使用range创建以下等差数列
# 11 12 13 14 15
for x in range(11,16):
print(x)
# 11 13 15 17 19
for x in range(11,20,2):
print(x)
# -2 -1 0 1 2
for x in range(-2,3):
print(x)
# 0 5 10 15 20
for x in range(0,21,5):
print(x)
# 10 8 6 4 2
for x in range(10,1,-2):
print(x)
3、循环的应用
(1)累计求和
第一步:定义一个变量来保存最后的结果,变量的默认值是0
第二步:使用循环获取需要求和的每一个数据
# 案例1:求1 + 2 + 3 + ... + 100
sum1 = 0
for x in range(1,101):
sum1 += x
print(sum1)
案例2:# 案例2:求100~200中所有能被3整除但是不能被5整除的和
sum2 = 0
for y in range(100,201):
if y % 3 == 0 and y % 5 != 0:
sum2 += y
print(sum2)
# 案例3:求分数列表中所有学生的总分
scores = [90, 45, 78, 92, 89, 74, 50, 91, 99, 80, 87, 63, 82]
sum3 = 0
for z in scores:
sum3 += z
print(sum3)
(2)统计个数
# 案例1: 统计scories中不及格分数的个数
count = 0
scores = [90, 45, 78, 92, 89, 74, 50, 91, 99, 80, 87, 63, 82]
for x in scores:
if x < 60:
count += 1
print(count)
# 练习:统计100以内能被3整除的数的个数
sum1 = 0
for x in range(1,101):
if x % 3 == 0:
sum1 += 1
print(sum1)
# 优化
sum1 = 0
for x in range(0,100,3):
sum1 +=1
print(sum1)
4、while循环
(1)语法
while 条件语句:
循环体
(2)说明
“while”:关键字,固定写法
“条件语句”:一般是判断语句(实际上可以写任何有结果的表达式)
“:”:固定写法(英文)
“循环体”:结构上,就是和while保持一个缩进的一条或多条语句(至少一条)
逻辑上,循环体就是需要重复执行的代码
(3)循环原理
不断判断条件语句是否成立,如果条件成立就立即执行循环体,条件不成立整个循 环体结束
# 案例:使用循环打印五次'hello world!'
#方法1:使用for循环
for x in range(5):
print('hello world!')
#方法2:使用while循环
x = 0
while x < 5:
print('hello world!')
x += 1
5、for和while的选择
(1)遇到循环问题的时候能用for循环解决问题的时候使用for,for循环解决不了的问题采用 while
(2)for循环解决不了循环次数不确定的问题,所以循环次数不确定的时候使用while循环
(3)循环次数不确定:循环次数由程序使用的时候用户的行为决定
#案例:写程序提示用户输入密码,直到输入正确为止
pw = '123456'
value = None
while value != pw:
value = input('请输入密码:')
四、循环关键字
continue和break - 结束循环(指在循环中使用)
1、continue
结束一次循环()执行循环体的时候如果遇到continue这次循环结束直接进入到下次循环)
2、break
结束整个循环(执行循环体时如果遇到break整个循环体直接结束,这次没有执行的部分不再执行,也不进入下一次循环)
3、当while遇到break
'''
while True:
需要重复执行的操作
if 循环结束的条件:
break
'''
# 练习:写一个数字游戏
from random import randint
number = randint(0,100) # 创建一个0-100的随机整数
while True:
num = int(input('请输入一个数:'))
if num > number:
print('猜大了!请小一点!')
elif num < number:
print('猜小了!请大一点!')
elif num == number:
print('恭喜!猜对了')
break
4、else
(1) 完整的for循环
for 变量 in序列:
循环体
else:
代码块
(2)完整的while循环
while 条件语句:
循环体
else:
代码块
else的存在不会影响循环的执行
else中的代码块会在上面的循环正常结束后执行,如果上面的循环是因为遇到break而结束, else中的代码块不会执行
# 案例:判断一个字符串是否是纯数字字符串
str1 = '12344567564'
# 方法1
for x in str1:
if not '0' <= x <= '9':
print('不是纯数字字符串')
break
else:
print('是纯数字字符串')
# 方法2
count = 0
for x in str1:
if not '0' <= x <= '9':
count +=1
break
if count == 0:
print('是纯数字字符串')
else:
print('不是纯数字字符串')