Day3 分支和结构
在学习编程的过程中是万万不能少了分支的,那么来一起看看在Python里的分支结构是怎么样的吧!
文章目录
1. 分支结构
1.if多分支结构 - 如果xxx就xxx,如果xxx就xxx,如果xxx就xxx,…(根据不同的条件做不同的事情)
- 方法1:直接多个单分支结构
if 条件1:
代码段1
if 条件2:
代码段2
if 条件3:
代码段3
- 方法2:使用elif的多分支结构
if 条件1:
代码段1
elif 条件2:
代码段2
elif 条件3:
代码3
...
else:
代码段N
注:
方法1:从上往下判断条件,每个条件都会被判断,且执行所有符合条件的代码块。
方法2:从上往下判断条件,遇到某个条件成立时就执行其代码块,后面的条件就直接忽略,整个结构中只执行一个条件。
1.2 案列
- 案列1:根据百分制分数,给学生打等级:A(大于等于90分)、B([80, 90))、C([60, 90))、C(小于60)
- 方法1:
score = 95
if score >= 90:
print('A')
if 80 <= score < 90:
print('B')
if 60 <= score < 80:
print('C')
if score < 60:
print('D')
A
- 方法2:
score = int(input('请输入您的分数:'))
if score >= 90:
print('A')
elif score >= 80:
print('B')
elif score >= 60:
print('C')
else:
print('D')
请输入您的分数:99
A
- 案例2:如果num是偶数就打印偶数,是奇数打印奇数,再判断是否是3的倍数,如果num能被4整除,打印’4的倍数’
# 3 -> 奇数
# 6 -> 偶数
# 8 -> 偶数、4的倍数
num = int(input('请输入一个整数:'))
if num % 2 == 0:
print('偶数')
if num % 4 == 0:
print('4的倍数')
else:
print('奇数')
if num % 3 == 0:
print('是3的倍数')
请输入一个整数:56
偶数
4的倍数
注:print的缩进和哪个条件一致,就打印哪个条件执行的结果
2. for循环
2.1 循环结构
循环结构 - 让代码重复执行
for _ in range(5):
print(100)
100
100
100
100
100
2.2 for循环
- 语法:
for 变量 in 序列:
循环体
- 说明:
1)for:关键字,固定写法
2)变量:变量名,可以是已经被定义过的,也可以没有被定义过的变量的变量名
3)in:关键字,固定写法
4)序列:必须是容器型数据类型的数据,列如:字符串、列表、字典、元组、集合、range、迭代器、生成器等
5): :冒号,固定写法
6)循环体:
- 结构上:循环体就是和for后面的语句保持一个缩进的语句(可以是多条,至少是一条)
- 逻辑上:就是需要重复执行的代码(块)
- 执行过程:让变量去序列中取值,取一个值执行一次循环体,直到序列中的值被取完为止。想要控制循环次数,就直接控制序列元素个数即可。
for i in 'abc':
print('i:', i)
print('Hello World')
print(100)
i: a
Hello World
100
i: b
Hello World
100
i: c
Hello World
100
for i in 'abc':
print('Hello World!')
Hello World!
Hello World!
Hello World!
2.3 range函数
作用:创建等差数列
1)range(N) - 产生[0, N)的等差数列,差是1
列如:
range(5) - 0,1,2,3,4
range(6) - 0,1,2,3,4,5
for i in range(10):
print(i)
0
1
2
3
4
5
6
7
8
9
2)range(M, N) - 产生[M, N)的等差数列,差是1
列如:range(5, 10) - 5,6,7,8,9
for i in range(10, 15):
print(i)
10
11
12
13
14
3)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 i in range(10, 20, 2):
print(i)
10
12
14
16
18
3. for的应用
3.1 累积求和
- 求和套路:
1)准备数据
2)定义变量保存最后求和结果(变量默认值一般是0)
3)通过循环依次获取求和对象,得到的对象就逐一保存到结果变量中 - 练习
- 计算1+2+3+4+…+100的和
sum1 = 0
for i in range(1, 101):
sum1 += i # sun1 = sum1 + i
print(sum1)
5050
- 计算列表中的总和
scores = [28, 34, 78, 90, 89, 96, 76, 99]
sum1 = 0
for x in scores:
sum1 += x
print(sum1)
590
- 练习1:求2+3+4+…+50的和
sum1 = 0
for i in range(2, 51):
sum1 += i
print(sum1)
1274
- 练习2:求3+6+9+12+…+99的和
sum2 = 0
for i in range(3, 100, 3):
sum2 += i
print(sum2)
1683
- 练习3:求100以内所有偶数的和
# 0+2+4+6+...+98
sum3 = 0
for i in range(0, 100, 2):
sum3 += i
print(sum3)
2450
- 练习4:求100以内所有能被3整除但是不能被5整除的数的和
# 3+6+9+12+18+21+24+27+...+99
# 方法1:
sum4 = 0
for i in range(100):
if i % 3 == 0 and i % 5 != 0:
sum4 += i
print(sum4)
# 方法2:
sum4 = 0
for i in range(100):
if i % 3 == 0:
if i % 5 != 0:
sum4 += i
print(sum4)
# 方法3:
sum4 = 0
for i in range(3, 100, 3):
if i % 5 != 0:
sum4 += i
print(sum4)
1368
1368
1368
- 练习5:已知列表list1,求列表中所有数字的和
sum5 = 0
list1 = [10, 1.23, 'abc', True, 20, 'mn', None]
for i in list1:
if type(i) == int or type(i) == float:
sum5 += i
print(sum5)
31.23
3.2 统计个数
- 方法
1)统计序列中元素个数,并保存到事先定义好的变量中(变量默认值一般为0)
2)通过循环获取每一个统计对象,获取一个对象,变量值就加1 - 练习
- 练习1:统计100以内偶数的个数
count = 0
for x in range(0, 100, 2):
count += 1
print(count)
50
- 练习2:统计nums中偶数的个数
nums = [21, 23, 44, 89, 70, 66, 55]
count = 0
for x in nums:
if x % 2 == 0:
count += 1
print(count)
3
- 练习3:统计scores中不及格学生的人数
scores = [99, 80, 67, 55, 40, 81, 72, 51]
count = 0
for x in scores:
if x < 60:
count += 1
print(count)
3
- 练习4:统计nums中个位数大于5的数的个数
nums = [21, 23, 44, 89, 70, 66, 55]
count = 0
for x in nums:
if x % 10 > 5:
count += 1
print(count)
2
4. while循环
4.1 语法
while 条件语句:
循环体(需要重复执行的代码)
其他代码
执行过程:
1)不断判断条件语句是否为True,如果是就执行循环体,如果不是就不再执行循环体。
2)控制次数的方式:保证条件一开始是True,经历过指定次数以后由True变成False
3)死循环 - 条件语句一直都是True,那就一直执行
练习:打印0-100
i = 0
while i <= 100:
print(i)
i += 1
0
1
2
…
98
99
100
4.2 for循环和while循环的选择
1)如果循环次数确定,使用for循环
2)如果循环次数不确定,使用while循环
- 循环次数不确定 - 程序员写代码时自己都不知道要重复多少次(次数是由使用程序的用户确定的)
"""
提示用户输入密码,直到输入正确为止:
156324
请输入密码(6位):726162
请输入密码(6位):615252
请输入密码(6位):192822
....
请输入密码(6位):156324
"""
pw = '156234'
value = None
while value != pw:
value = input('请输入密码(6位):')
请输入密码(6位):123456
请输入密码(6位):156234
while True:
需要重执行代码
if 循环结束条件:
break