概念:在程序运行过程中能够对某些情况正确的做出选择
系统关键字:if、else、elif
1、单分支结构"""
语法:
if 条件:
代码块1
else:
代码块2
else分支可以不写
"""
解释:当条件成立时,执行代码块1;否则执行代码块2
案例:在某个网站登录账号
UserName = input('请输入账号:')
pwd = input('请输入密码:')
if UserName == 'admin' and pwd == '123456':
print('登陆成功')
else:
print('登陆失败,账号或密码错误')
"""
请输入账号:admin
请输入密码:123456
登陆成功
"""
练习:使用input输入一个年龄,判断这个人是否成年
age = int(input('请输入一个年龄:'))
if 0 < age < 18:
print('未成年')
else:
print('成年')
"""
请输入一个年龄:18
成年
"""
2、多分支结构
"""
语法:
if 条件:
代码块1
elif 条件:
代码块2
elif 条件:
代码块3
......
else:
代码块n
"""
解释:elif可以写无数个乃至n个,else可以看情况写或者不写
案例:考试成绩划分等级(ABCDE)
score = 89
if score >= 90:
print('A')
elif score >= 80:
print('B')
elif score >= 70:
print('C')
elif score >= 60:
print("D")
# elif score < 60:
else:
print('E')
# -------------------------
if score >= 90:
print('A')
# elif score >= 80 and score < 90:
elif 80 <= score < 90:
print('B')
# elif score >= 70 and score < 80:
elif 70 <= score < 80:
print('C')
# elif score >= 60 and score < 70:
elif 60 <= score < 70:
print('D')
else:
print('E')
"""
B
B
"""
3、嵌套分支
概念:一个分支结构再嵌套多个分支结构
案例:判断数字是否是偶数,如果是偶数再判断其是否是10的倍数
num = 20
if num % 2 == 0:
print(f'{num}是偶数')
if num % 10 == 0:
print(f'{num}是10的倍数')
else:
print(f'{num}不是10的倍数')
else:
print(f'{num}是奇数')
"""
20是偶数
20是10的倍数
"""
4、三目运算符
语法:变量 = 结果1 if 条件 else 结果2
释义:针对单分支结构做的简化,性能和单分支结构没有差异;如果条件成立,执行结果1,否则执行结果2。
案例:判断一个人是否成年
age = 20 result = '成年' if age >= 18 else '未成年' print(result) # 成年2、循环
概念:可以借助程序来解决某一类重复、繁琐的事情
系统关键字:for、in、while、break、continue、else
1、for循环"""
语法:
for 变量 in 容器:
代码块
"""
解释:将变量从容器中依次取出执行代码块,容器中元素个数决定了for循环次数
range(M, N, step)
- 一个左闭右开区间,M是范围的起点,N是范围的终点,也即[M, N);step是步长,默认值为1,可以不写
- 步长step决定了下一个元素获取谁,当前元素 + step = 下一个元素
- 如果range中只有一个数字x,并且x大于0的,代表从0获取到x-1,此时x等于结束范围N,0等于开始范围M,step默认为1
- 如果step>0的,M
N
用法示例:
- range(1, 11):获取1-10十个元素
- range(1, 11, 3):获取1、4、7、10四个元素
- range(10):获取0-9十个元素
- range(12 ,4):获取不到元素
- range(0, 10, -1):获取不到元素
- range(11, 1, -1):从11取到2,一共十个元素
for i in range(1, 6):
print(i)
print('------------------------')
for i in range(1, 6, 5):
print(i)
print('------------------------')
for i in range(1, 6, -1):
print(i)
print('------------------------')
for i in range(0, -10, -3):
print(i)
print('------------------------')
"""
1
2
3
4
5
------------------------
1
------------------------
------------------------
"""
案例:计算1-100的和
sum = 0
for i in range(1, 101):
# print(i)
sum += i
print(sum)
# 5050
练习一:通过修改步长,计算100以内2的倍数的和
sum = 0
for i in range(2, 101, 2):
sum += i
print(sum)
# 2550
练习二:计算100的阶乘
total = 1
for i in range(2, 101):
total *= i
print(total)
"""
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
"""
2、while循环
"""
语法:
while 条件:
代码块
"""
解释:当条件为真时,执行代码块;否则不执行
while循环与for循环区别:for适合循环次数确定的循环;while既适合循环次数确定的循环,又适合循环次数不确定的循环
案例:计算1-100的和
sum = 0
i = 1
while i < 101:
sum += i
i += 1
print(sum)
# 5050
练习:猜数字游戏:如果猜的数字比较大,提示再小一点;如果猜的数字比较小,提示再大一点;如果猜对了,程序结束;如果7次之内猜不对,提示智商有限
tips:随机模块random.randint(a, b):表示从[a, b]中随机生成一个整数
import random
num = random.randint(1, 100)
flag = True
count = 0
while flag:
num1 = int(input('请输入你猜的数字:'))
count += 1
if num1 > num:
print('再小一点')
elif num1 < num:
print('再大一点')
else:
print('猜对了')
flag = False
if count > 7:
print('智商有限')
"""
请输入你猜的数字:50
再大一点
请输入你猜的数字:75
再大一点
请输入你猜的数字:87
再大一点
请输入你猜的数字:94
再小一点
请输入你猜的数字:90
再大一点
请输入你猜的数字:92
再小一点
请输入你猜的数字:91
猜对了
这只是一种随机的情况,大家各自执行时不一样
"""
小知识:二分法思想,每次猜的时候可以取中值,分成两半,再对剩下的一般再次取中值,那么在100以内之多7次可以猜出对应的数字。
3、跳出循环的关键字包括:break、continue
break:被触发时,直接结束break所在循环
案例:
for i in range(1, 101):
if i % 5 == 0:
print('****')
break
print('====')
else:
print(i)
"""
1
2
3
4
****
"""
continue:被触发时,跳出continue所在循环的当次循环,进入下一次循环
案例:
for i in range(1, 11):
if i % 5 == 0:
print('****')
continue
print('====')
else:
print(i)
"""
1
2
3
4
****
6
7
8
9
****
"""
注意:break可以结束死循环,例如:
i = 1
while True:
i += 1
if i == 5:
break
print(i)
"""
2
3
4
"""
4、for-else循环
"""
语法:
for 变量 in 容器:
代码块
else:
代码块
"""
解释:
-
for-else循环适用于所有可能性考虑完才能得到某一结论的场景
-
for循环正常结束之后,else语句被触发;如果for循环非正常结束,else语句不会被触发
案例:找出100以内所有的素数(只有1和本身两个因子的正整数叫做素数)
for i in range(2, 101):
if i == 2:
print('2是素数')
else:
for j in range(2, i):
if i % j == 0:
print(f'{i}不是素数')
break
else:
print(f'{i}是素数')
"""
由于结果过长,这里只注释出10以内所有的素数
是素数
3是素数
4不是素数
5是素数
6不是素数
7是素数
8不是素数
9不是素数
10不是素数
.......
"""



