文章目录
1. 分支结构
1.1 程序执行过程
默认情况下,程序从上往下一条一条的执行,每一条语句都会执行并且只会执行一次
1.2 if单分支结构
如果xxx就xxx(满足条件执行某个操作,条件不满足的时候这个操作就不执行)
# 语法
if 条件语句:
代码段
说明:
- if - 关键字;固定写法
- 条件语句 - 可以是任何有结果的表达式(比如:具体的数据、运算表达式、已经定义过的变量等,只有赋值语句不行);
一般将结果是布尔的表达式作为条件 - : - 固定写法(注意输入法问题)
- 代码段 - 结构上,就是和if保持一个缩进的一条或者多条语句(至少一条!!!);
逻辑上,就是满足条件才会执行代码。
执行过程:先判断条件语句是否成立(如果条件语句的结果不是布尔,就转换成布尔看是否是True),如果成立就执行代码段;条件不成立,代码段就不执行。
age = 18
if age >= 18:
print('成年!')
num = 230
if num % 2 == 0:
print('偶数')
# 运行结果
'''
成年!
偶数
'''
1.3 if双分支结构
如果xxx就xxx否则就xxx(条件成立执行某个操作,不成立就执行另外一个操作)
# 语法
if 条件语句:
代码块1(满足条件执行的代码)
else:
代码块2(不满足条件执行的代码)
练习1:根据age的值打印成年或者未成年
age = 29
if age < 18:
print('未成年')
else:
print('成年')
# 运行结果
'''
成年
'''
练习2:根据year的值打印’闰年’或者’平年’
year = 2004
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
print('闰年')
else:
print('平年')
# 运行结果
'''
闰年
'''
1.4 if多分支结构
使用elif对应的对分支结果(多个条件之间存在’其中一个条件成立,另外的条件就不成立’的情况)
# 语法
if 条件1:
代码块1
elif 条件2:
代码块2
elif 条件3:
代码块3
.
.
.
else:
代码块n
注意:后面的条件是在前面的条件不成立的基础上进行判断的。如果前面的某个条件成立,后面的条件不会再判断
案例1:根据百分制分数,给学生打等级:A(大于等于90分)、B([80,90))、C([60,80))、D(小于60)
score = 95
if score >= 90:
print('A')
elif 80 <= score:
print('B')
elif 60 <= score:
print('C')
else:
print('D')
# 运行结果
'''
A
'''
1.4 if嵌套结构
if分支结构的内部又有分支结构
案例:如果num是偶数就打印偶数,是奇数打印奇数,如果num能被4整除,打印’4的倍数’
num = 8
if num % 2 == 0:
print('偶数')
if num % 4 == 0:
print('4的倍数')
else:
print('奇数')
# 运行结果
'''
偶数
4的倍数
'''
1.5 三目运算符
结果1 if 条件 else 结果2
判断条件是否为True,如果为True整个运算结果就是结果1,否则整个运算结果是结果2。
age = 18
result = '未成年' if age < 18 else '成年'
print(result)
# 运算结果
'''
成年
'''
2. for循环
让代码重复执行(代码写一遍,重复执行多次)
# 语法
for 变量 in 序列:
循环体
说明:
- for - 关键字,固定写法
- 变量 - 变量名(可以是已经定义过的变量的变量名也可以是没有定义过的变量的变量名)
- in - 关键字;固定写法
- 序列 - 必须是容器型数据类型的数据,例如:字符串、列表、字典、元组、集合、range、迭代器、生成器等
- : - 固定写法
- 循环体 - 结构上,循环体就是和for保持一个缩进的一条或者多条语句(至少一句)
逻辑上,就是需要重复执行的代码
执行过程:让变量去序列中取值,一个一个的取,取完为止,每取一个值就执行一次循环体。
(想要控制for循环的循环次数,只需要控制序列中元素的个数)
案例
for x in 'abc':
print('x:', x)
print('hello world!')
print(100)
# 运行结果
'''
x: a
hello world!
100
x: b
hello world!
100
x: c
hello world!
100
'''
3. range函数
用于创建一个等差数列
一般搭配for循环使用
- range(N) - 产生[0,N)的等差数列,差是1
例如:range(5) - 0,1,2,3,4
range(6) - 0,1,2,3,4,5
for x in range(10):
print(x, end=' ')
# 运行结果
'''
0 1 2 3 4 5 6 7 8 9
'''
- range(M, N) - 产生[M,N)的等差数列,差是1
例如: range(5, 10) - 5、6、7、8、9
for x in range(10, 16):
print(x, end=' ')
# 运行结果
'''
10 11 12 13 14 15
'''
- range(M, N, step) - 产生[M,N)的等差数列,差是step
例如:range(10, 20, 2) - 10,12,14,16,18
range(9, 0, -2) - 9, 7, 5, 3,1
for x in range(9, 0, -2):
print(x, end=' ')
# 运行结果
'''
9 7 5 3 1
'''
4. while循环
# 语法
while 条件语句:
循环体(需要重复执行的代码)
其他代码
执行过程:
- 不断判断条件语句是否为True,如果是就执行循环体,如果不是循环直接结束。
(控制次数的方式:保证条件一开始是True,经历过指定次数以后条件会由True变成False) - 死循环 - 条件语句一直都是True,需要搭配循环关键字使用
案例1: 打印0、1、2、3、4、5、…、20
num = 0
while num <= 20:
print(num, end=' ')
num += 1
# 运行结果
'''
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
'''
案列2: 提示用户输入密码,直到输入正确为止。
pwd = '156234' # password
value = None
while value != pwd:
value = input('请输入密码(6位):')
print(value)
# 运行结果
'''
141141
25315125
156234
'''
5. for循环和while循环的选择
- 如果循环次数确定使用for循环。
- 如果循环次数不确定,使用while循环。
循环次数不确定 - 程序员在写代码的时候无法确定(确认)这个循环会重复多少次(次数有使用程序的用户决定的)
6. 循环关键字
循环关键字有:continue、break、else
6.1 continue和break
continue和break只能出现在循环体中
-
continue - 结束一次循环(结束当前这次循环)
- 在执行循环体的过程中如果遇到continue,那么这一次循环结束(不会执行continue下面的代码),直接进入下一次循环
- 实际应用中,continue能够被替代,所以使用次数很少。
for i in range(1,11):
if i % 3 == 0:
continue
print(i, end=' ')
# 运行结果
'''
1 2 4 5 7 8 10
'''
- break - 结束整个循环
- 在执行循环体的时候,如果遇到break,则立刻中止整个循环
for i in range(1,11):
if i >= 6:
break
print(i, end=' ')
# 运行结果
'''
1 2 3 4 5
'''
- while循环与break(死循环)
需要依靠break跳出循环
使用方法
while True:
循环代码
if 结束条件:
break
案例
import random as rd
num = rd.randint(0,100)
while True:
value = int(input('请输入你猜的数字:'))
if value == num:
print(num, value, '恭喜你,猜对了!')
break
elif value > num:
print(value, '大了,再小点儿!')
else:
print(value, '小了,再大点儿!')
# 运行结果
'''
50 大了,再小点儿!
25 小了,再大点儿!
37 小了,再大点儿!
43 43 恭喜你,猜对了!
'''
6.2 else
- else的存在不影响原循环的执行
- 如果else对应的循环是自然死亡,else后面的代码段会执行(就循环结束后执行);如果else对应的循环是因为遇到break而结束的,else后面的代码在循环结束后不会执行
for 变量 in 序列:
循环体
else:
代码段
while 条件语句:
循环体
else:
代码段
- else的存在不影响原循环的执行
- 如果else对应的循环是自然死亡else后面的代码段会执行(就循环结束后执行);
- 如果else对应的循环是因为遇到break而结束的,else后面的代码在循环结束后不会执行。
for x in range(5):
print(x, '====')
else:
print('else!')
# 运行结果
'''
0 ====
1 ====
2 ====
3 ====
4 ====
else!
'''