文章目录
分支结构
- 流程控制
- 顺序执行
- 代码从上往下一条一条按顺序执行(默认)
一、分支结构(选择结构)
根据条件选择执行或者不执行某些代码(python中只有if语句)
1.1 if单分支结构
-
应用:
如果满足某个条件就执行某段代码,条件不满足就不执行 -
语法:
if 条件语句:
代码段 -
说明:
- if 关键字;固定写法
- 条件语句 任何有结果的表达式(包括:具体的数据、已经赋值过的变量、运算表达式,赋值语句除外…)
- 冒号: 固定写法(必须使用英文输入法下的冒号)
- 代码段 和if保持一个缩进的一条或多条语句;需要满足条件才会执行的代码
-
执行过程:
- 先判断if后面的条件语句是否为True(如果不是布尔,就看结果的布尔值是否为True)
- 条件结果为True,就执行代码段,否则代码段不执行
if 100:
print('第一条语句')
print('第二条语句')
第一条语句
第二条语句
# 如果指定年龄成年,打印可以进网吧
age = 22
if age >= 18:
print('可以进网吧')
可以进网吧
1.2 if双分支结构:if-else
-
应用场景:
满足条件执行某个操作,不满足时执行另一个操作 -
语法:
if 条件语句:
代码段1(满足条件执行)
else:
代码段2(不满足条件的时候执行) -
执行过程:
判断条件语句是否为True,如果为True就执行代码段1,否则执行代码段2
# 练习:根据num的值打印'奇数','偶数'
num = 0
if num % 2:
print('奇数')
else:
print('偶数')
# 练习:根据year的值打印'闰年'或'非闰年'
year = 200
if year % 400 == 0 or (year % 100 and year % 4 == 0):
print('闰年')
else:
print('非闰年')
# 练习:判断一个数是否是素数
num = 37
if num <= 0:
print('非素数')
else:
factors = []
for i in range(2, num):
if not num % i:
factors.append(num % i)
print('非素数')
break
if not factors:
print('素数')
# 练习:根据symbol的值来对num进行加1或减1的操作
symbol = '-'
num = 10
if symbol == '+':
num += 1
print(num)
elif symbol == '-':
num -= 1
print(num)
偶数
非闰年
素数
9
1.3 多分支结构:if-elif-else
-
应用场景:
针对不同的条件实现不同的操作(不同条件之间:如果其中一个条件已经满足,就没有再判断其他条件的必要) -
语法:
if 条件语句1:
代码段1
elif 条件语句2:
代码段2
elif 条件语句3:
代码段3
…
else:
代码段n
注意:
后面的条件实在前面的条件不成立的前提下进行判断的
# 练习:要求根据symbol的符号不同,对num与2进行不同的操作,例如:symbol是'+' -> num就加2; '-' -> num就减2; '*' -> num*2,依次类推
# 如果symbol不是数学运算给出 '不能操作!' 的提示
symbol = '+'
num = 20
op = True
if symbol == '+':
num += 2
elif symbol == '-':
num -= 2
elif symbol == '*':
num *= 2
elif symbol == '/':
num /= 2
elif symbol == '//':
num //= 2
elif symbol == '%':
num %= 2
elif symbol == '**':
num **= 2
else:
op = False
print('不能操作!')
print('num:', num)
# num: 22
1.4 if嵌套
在if语句中有其它的if语句
# 练习:如果num是奇数就打印 '奇数', 否则打印偶数。如果个数是0,打印 '10的倍数'
num = -6078
if num % 2:
print('奇数')
else:
print('偶数')
if not num % 10:
print('10的倍数')
1.5 三目运算符
-
C的三目运算符 ? :
A ? B : C
(判断表达式 A 的值是真,整个运算的结果是表达式 B ,否则结果是表达式 C)
-
python的三目运算符
B if A else C
(如果表达式 A 的值为True,结果为表达式 B ,否则结果为表达式 C ;在推导式的时候用的多)
result = 30 if 100 > 20 else 40
print(result)
30
# 练习:根据年龄值打印成年或者未成年
age = 19
adult = '已成年' if age >= 18 else '未成年'
print(f'{age}岁{adult}。')
19岁已成年。
循环
一、for循环
1.1 for循环
-
语法:
for 变量 in 序列:
循环体
-
说明:
- for - 关键字;固定写法
- 变量 - 和定义变量的时候变量名的要求和规范一样;(如果变量在循环体中不使用,变量名可以用下划线_表示)
- in - 关键字;固定写法
- 序列 - python中容器型数据类型,例如:字符串、列表、元组、集合(不按顺序遍历)、字典、迭代器、生成器、range等…
- 冒号: - 固定写法 循环体 - 和for保持一个缩进的一条或者多条语句
-
执行过程:
让变量去序列中取值,一个一个的取,取完为止,每取一个就执行一次循 环体(for循环的执行次数,看序列中的元素个数)
for x in 'abc':
print(x, 'hello world!')
# 输出
a hello world!
b hello world!
c hello world!
1.2 range函数
-
range函数 - 产生指定范围的数字序列
-
range(N) - 产生一个[0, N)的数字序列,N为正整数
例如:range(4)产生0、1、2、3的数字序列 -
range(M,N) - 产生一个[M, N)的数字序列,M<N,都是整数
-
range(M,N,step) - 产生一个[M, N)的数字序列,每次数值增加step
如果step<0,也要M>N
例如:range(-3,3,2) - 产生-3、-1、1
# 打印100行
for _ in range(100):
print('hello world!')
# 练习:根据年龄值打印成年或者未成年
age = 19
adult = '已成年' if age >= 18 else '未成年'
print(f'{age}岁{adult}。')
# 练习:计算1+2+……+100的和
num = 0
for i in range(1, 100+1):
num += i
print(num)
# 练习:统计1000以内能被3整除的个数
num = 0
for i in range(0, 1000, 3):
num += 1
print(num)
# 练习:打印1000以内能被3整除并且个位是2的所有的数
for i in range(0, 1000, 3): # 先看3的倍数,再找个位为2的数
if i % 10 == 2:
print(i, end=' ')
print()
for i in range(2, 1000, 10): # 先看个位,再找倍数
if not i % 3:
print(i, end=' ')
print()
二、while循环
-
语法:
while 条件语句:
循环体 -
说明:
- while - 关键字;固定写法
- 条件语句 - 任何有结果的表达式(赋值语句不行)
- : - 固定写法
- 循环体 - 和while保持一个缩进的一条或者多条语句;需要重复执行的代码
-
执行过程:
- 先判断条件语句是否为True,如果是就执行循环体,
- 执行完再判断条件语句是否为True,是的话继续执行循环体,
- 直到条件语句结果是False循环结束
三、for循环和while循环的选择
- 如果循环次数确定使用for循环;如果循环次数不确定就使用while循环
# 练习:不输入0,就不结束
while input('请输入:') != '0':
continue
# 练习:猜数字。随机产生一个数,请输入数字,指示大小,直到猜中
from random import randint
num = randint(0, 100)
guess = ''
print('猜数字🙃')
while True:
guess = input('请输入数字:')
if guess == '不猜了':
print('结束')
break
else:
try:
guess = int(guess)
except:
print('格式不对?')
else:
if guess == num:
print('恭喜你,猜对了!')
break
elif guess > num:
print('大了,再小点儿~')
elif guess < num:
print('小了,再大点儿~')