一、分支结构if
在python中,分支结构只有if语句
1.if语句
1)结构1:满足某个条件才执行某段代码
a. 语法1:
if 条件语句:
代码段
b. 说明:
- if —— 关键字
- 条件语句 —— 可以是一个具体的数据,也可以是一个已经赋值过的变量,或者是运算表达式(不能是赋值语句)
- : —— 固定写法
- 代码段 —— 一条或者多条和if保持一个缩进的语句
c. 执行过程:
先判断条件的结果是否为True(如果不是布尔就先转换成布尔),如果为True就执行代码段,然后再执行其他语句
补充:布尔值转换 —— python中所有的数据都能转换成布尔,所有为0为空的值都会转换成False(包括None),其他都是True
if 100:
print('数字') # 会执行
if 0:
print('0') # 不会执行
# 练习1:输入年龄,如果输入的年龄值是大于等于18岁,打印‘可以进网吧’
age = int(input('请输入年龄:'))
if age >= 18:
print('可以进网吧')
2)结构2:满足某个条件执行某段代码,不满足这个条件的时候执行另外一段(if - else)
a. 语法:
if 条件语句:
代码段1
else:
代码段2
b. 说明:
- if/else —— 关键字,固定写法
- 条件语句 ——可以是一个具体的数据,也可以是一个已经赋值过的变量变量,或者是算法表达式(不能是赋值语句)
- : —— 固定结构
- 代码段1 —— 和if保持一个缩进的一条或者多条语句(满足if后面的条件才会执行)
- 代码段2 —— 和else保持一个缩进的一条语句或多条语句(if后面的条件不成立才会执行)
c. 执行过程:先判断条件语句是否为True,如果为True就执行代码段1,否则执行代码段2
if True:
print('代码段1') # 会执行
else:
print('代码段2') # 不会执行
if False:
print('代码段1') # 不会执行
else:
print('代码段2') # 会执行
3)结构3:条件有多个(有关联)的时候执行不同的代码段(if - elif - ... - else)
a. 语法:
if 条件语句1:
代码段1
elif 条件语句2:
代码段2
elif 条件语句3:
代码段3
...
else:
代码段N
b. 执行过程:
先判断条件语句1是否为True,如果为True就执行代码段1,然后整个if结构结束直接执行其他语句;
如果条件语句1为False,就判断条件语句2是否为True,为True就执行代码段2再执行其他语句;
如果 条件语句2为False,就判断条件语句3是否为True,为True就执行代码段3再执行其他语句;
以此类推;
如果所有的条件语句都是False,就执行代码段N,再执行其他语句
# 根据输入的年龄值,判断年龄处于的阶段
# 0-3 -> 幼儿; 4-12 -> 儿童; 13-18 -> 青少年; 19-28 -> 青年; 29-50 -> 壮年; 50以上 老年
age = int(input('请输入年龄:')) # 20
if age <= 3:
print('幼儿')
elif age <= 12:
print('儿童')
elif age <= 18:
print('青少年')
elif age <= 28:
print('青年') # 输出 '青年'
elif age <= 50:
print('壮年')
else:
print('老年')
2.if语句嵌套
在if结构中的if、else、elif后面的代码段中,还可以写其他的if语句
# 练习:输入一个数,如果这个数是偶数,打印‘偶数’,如果是奇数打印‘奇数’,如果这个数能被4整除就打印‘4的倍数’
num = int(input('请输入一个数:'))
if num & 1:
print('奇数')
if num % 10 == 1:
print('个位数是1')
else:
print('这个奇数的个位数不是1')
else:
print('偶数')
if not num % 4:
print('4的倍数')
二、循环for、while
python中的循环有两种:for ~ in循环和while循环
如果某段代码需要重复执行,就使用循环结构
1. for循环
1)语法:
for 变量名 in 序列:
循环体
其他语句
2)说明:
- for —— 关键字
- 变量名 —— 要求和声明变量的时候的变量名一样
- in —— 关键字
- 序列 —— 容器型数据类型数据,例如:字符串、列表、元祖、字典、集合、迭代器、生成器、range
- 循环体 —— 和for保持一个缩进的一条或多条语句;循环体的代码就是需要重复执行的代码
3)执行过程:
让变量去序列中取值,一个一个的取,取完为止,每取一个值执行一次循环体
(python中控制for循环的循环次数,是通过控制in后面序列的元素的个数来控制)
# 练习:打印10行
for i in '0123456789':
print('===')
4)range函数
range函数:产生指定范围的数字序列
- range(N) —— 产生0~N-1的整数序列
- range(M, N) —— 产生M~N-1的整数数列(range(M, N, 1))
- range(M, N, step) —— 从M开始每次加step产生下一个数,知道N前一个数为止
# 套路一:求和的套路
sum1 = 0
for i in range(1, 101):
sum1 += i
# sum1 = sum1 +num
print(sum1)
# 练习2:统计100以内能够被2整除,但是不能被3整除的数的个数
# 套路2:统计个数的套路
num = 0
for i in range(1, 100):
if (not i & 1) and i % 3:
num += 1
print(num)
2.while循环
1)语法:
while 条件语句:
循环体
其他语句
2)说明
- while —— 关键字
- 条件语句 —— 只要有结果的表达式都可以(赋值语句不行)
- 循环体 —— 和while保持一个缩进的一条或者多条语句;(需要重复执行的代码就放在循环体中)
3)执行过程:
先判断条件语句书否为True,如果为True,就执行循环体;
执行完循环体再判断条件语句是否为True,为True又执行循环体;
...
以此类推
当判断条件语句的结果为False的时候,占整个循环结束,执行后面的其他语句
4)for和while循环怎么选?
循环次数确定的时候使用for循环;
循环次数不确定和死循环的时候使用while循环
# 练习:从键盘上输入数字直到数字0位置
"""
请输入数字:23
请输入数字:199
请输入数字:0
账号:abc 密码:123456
请输入密码:11122
密码错误!
请输入密码:90293
密码错误!
请输入密码:90293
密码错误!
请输入密码:123456
密码正确!
"""
while True:
num = int(input('请输入一个数字:'))
if not num:
print('exit...')
break
print('again...')
account = input('请输入账号:')
while True:
pwd = input('请输入密码:')
if pwd == '123456':
print('密码正确!')
break
print('密码错误!')
# 练习2:输入数字,直到输入的数字值是0;统计输入的数字中偶数的个数
count_odd = 0
while True:
num = int(input('请输入一个数字:'))
if not num & 1:
count_odd += 1
if not num:
print('exit...')
break
print('again...')
print('输入的偶数的个数:', count_odd)
5)continue
continue是只能出现在循环体中的关键字
当执行循环体的时候遇到了continue,当次循环结束,执行进入下次循环的判断
for i in range(10):
print(i)
print('===')
if not i & 1:
continue
print('+++')
"""
0
===
1
===
+++
2
===
3
===
+++
4
===
5
===
+++
6
===
7
===
+++
8
===
9
===
+++
"""
# 计算1~99中不能被7整除的
sum1 = 0
num = 0
while num < 100:
num += 1
if num % 7 == 0:
continue
sum1 += num
print(sum1) # 4315
6)break
只能用在循环体中的关键字
当执行循环体的时候,如果遇到break,整个循环直接结束
# 练习:从1+2+...+x? 和最接近100000
# 方法一:
sum1 = 0
for i in range(100000):
sum1 += i
if sum1 > 100000:
break
print(sum1 - i + 1, i-1, sum1) # 99682 446 100128
# 方法二:
sum1 = 0
i = 0
while True:
if sum1 >100000:
i -= 1
break
i += 1
sum1 += i
print(sum1 - i, i, sum1) # 99682 446 100128
7)else
for 变量 in 序列:
循环体
else:
代码段
while 条件语句:
循环体
else:
代码段
执行过程:
如果循环自然死亡(结束)else后面的代码会执行
如果循环是因为遇到break而结束,else后面的代码段不会执行
for i in range(4):
print(i, '===')
# break
else:
print('+++')
print('!!!')
"""
0 ===
1 ===
2 ===
3 ===
+++
!!!
"""