Python基础 3》流程控制语句
文章目录
- 一、流程控制语句的三种方式
- 二、顺序结构
- 三、分支结构(if)
- 1.单分支结构
- 2.双分支结构
- 3.多分支结构
- 4.分支嵌套
- 四、循环结构(for、while)
- 1.while 循环
- 1.1.while 循环语法
- 1.2.while 循环嵌套
- 2.for 循环
- 2.1.range函数
- 2.2.for 循环语法
- 2.3.for 循环嵌套
- 3.关键字(break、continue)
一、流程控制语句的三种方式
- 顺序结构 ----> 按照顺序执行代码
- 分支结构 ----> 有条件约束,达到了某个条件才会执行代码
- 循环结构 ----> 循环执行代码
二、顺序结构
# 程序按照顺序依次执行代码,一句接一句的执行
# 我们平常写的代码都是顺序结构
print("a")
print("b")
print("c")
三、分支结构(if)
Python 的分支结构的语法是 if。
分支结构我举几个小结:
- 单分支结构
- 双分支结构
- 多分支结构
- 分支嵌套
注意点:
- 不要忘记写判断条件后的冒号. 且一定要是英文冒号.
- if语句下的代码, 要缩进一次. 缩进一次是4个空格.
- elif语句可以写多个.
- 条件判断是互斥且有序的.
- 满足条件1, 将不会执行2,3,4.
- 不满足条件1, 才会进入条件2, 如果条件2满足, 则不会执行3,4,依此类推.
- else不是必须写的. 如果条件不成立时没有要做的事情, 可以不写.
1.单分支结构
"""
分支结构是程序在运行过程中达到某一条件才会执行代码的结构。
单分支结构
- 程序在运行过程中,如果达到了某个条件,就会执行该条件下的代码
"""score = 89
if score >= 90:print(f"优秀")
2.双分支结构
"""
双分支结构
- 程序在运行过程中, 如果达到了某个条件, 就执行某个代码, 否则执行另一个代码.
- 语法:
- if 条件表达式:
- 条件成立执行的代码
- else:
- 条件不成立执行的代码
"""
# 编写一个高考学校的录取系统.
# 定义一个变量表示考试考了多少分.
score = int(input("请问你考了多少分?:"))
# 如果分数超过690分, 就可以去读清华大学.
# 如果分数没有达到此分数, 就不能去读了.if score > 690: # bool(score > 690)print('恭喜你, 可以报考清华大学了')
else:print('很可惜, 还需要继续努力.')
3.多分支结构
"""
多分支结构
- 程序在运行过程中, 如果达到了某个条件, 就执行某个代码, 否则执行另一个代码.
- 语法:
- if 条件表达式:
- 条件成立执行的代码
- elif 条件表达式:
- 条件成立执行的代码
- elif 条件表达式:
- 条件成立执行的代码
- else:
- 条件不成立执行的代码
"""# 程序接收一个数, 为学生考试的分数. 给学生考试的分数分档次.
# (1)100: 则提示满分.
# (2)90-100: 优秀
# (3)80-90: 良好
# (4)70-80: 不错
# (5)60-70: 及格
# (6)60以下: 不及格score = int(input("请问你考了多少分?:"))
# 这种需求使用if + elif是最合适的.
if score == 100:print("恭喜你, 考了满分")
elif 90 <= score:print("恭喜你, 成绩优秀")
elif 80 <= score:print("恭喜你, 成绩良好")
elif 70 <= score:print("恭喜你, 成绩不错")
elif 60 <= score:print("及格边缘, 需要在努力")
else:print("不及格")
4.分支嵌套
"""
分支嵌套
- 程序在运行过程中, 如果达到了某个条件, 就执行某个代码, 否则执行另一个代码.
- 语法:
- if 条件表达式:
- 条件成立执行的代码
- if 条件表达式:
- 条件成立执行的代码
- else:
- 条件不成立执行的代码
"""
# 考试分3科目: 语文, 数学, 英语. 每一科目满分150.单科及格分为90. 满分450.
# 有一所学校. 招生条件是分数达到360. 且有附加条件.
# 这所学校呢, 理科专业特别强. 所以数学, 需要单科达到130以上, 且总分需要360.
# 特例: 如果数学满分, 那么总分可以减少20即可录取.
# 语文跟英语不限制.
# 现在需要写一个程序来判断是否能够读这个学校.chinese = int(input('语文考了多少分:'))
maths = int(input('数学考了多少分:'))
english = int(input('英语考了多少分:'))total = chinese + maths + english# if maths == 150:
# if total >= 340:
# print('恭喜你以数学满分的成绩录取')
# else:
# print('很可惜, 语文英语还需努力.')
# elif maths >= 130:
# if total >= 360:
# print('恭喜你已经被录取')
# else:
# print('很可惜, 语文英语还需加倍努力.')
# else:
# if total >= 360:
# print("很可惜, 数学还需要努力")
# else:
# print("可惜, 你没有考上.")if total >= 360:if maths >= 130:print('恭喜你, 已经被录取')else:print("很可惜, 你没有被录取")
elif total >= 340:if maths == 150:print('恭喜你以数学满分的成绩录取')else:print('很可惜. 还差一点点.')
else:print('你没有被录取')
四、循环结构(for、while)
1.while 循环
1.1.while 循环语法
在程序中,循环功能和 if 条件判断一样,是程序最核心的逻辑功能。
用于在条件为真时重复执行一段代码块。
# while循环的基本语法:
while 条件:条件满足时,做的事情1条件满足时,做的事情2pass# 冒号和缩进不要忘了.# 当条件的运算结果为True的时候, 会运行while代码块下的代码.# 若while后的条件一直为True, 则会一直循环运行while代码块下的代码.# 若为False, 则表示结束循环.
# 所以需要设置循环终止的条件,否则将进入无限循环.
案例1:输出直角三角形
'''
*
**
***
****
*****
******
*******
********
*********
**********
'''
# 打印这样的一个高为10的直角三角形.
i = 1
while i <= 10:print('*' * i)i += 1
案例2:求 1-100 的累加和
# 求1-100的累加和.
# 1 +2 +3 +4 +5 + ... + 100i = 1
total = 0
while i <= 100:total += ii += 1
print(total)
案例3:整数反转
# 整数反转 12345 54321
# 通过while循环来做.
num = input("请输入一个正整数:")
new_num = ''i = len(num) # 5while i >= 1: # len 1 2 index 0new_num += num[i-1] # num[0] num[1]i -= 1print(new_num)
1.2.while 循环嵌套
当我们需要在while循环内执行另一个循环时,我们可以使用while循环嵌套的形式。
# while循环嵌套的基本语法
while 条件1:条件1满足时,做的事情1条件1满足时,做的事情2passwhile 条件2:条件2满足时,做的事情1条件2满足时,做的事情2pass# 第一个while循环将重复执行内部代码块,直到条件1不再满足为止。在内部代码块中,我们有另一个while循环,它将重复执行内部代码块,直到条件2不再满足为止。这种嵌套的循环结构可以用于处理许多问题.# 需要注意的是,在使用嵌套循环时,我们需要仔细考虑内部和外部循环之间的交互,以确保程序能够正确地执行。另外,需要注意的是,循环嵌套可能会导致程序的执行速度变慢,因此我们应该尽可能地避免不必要的循环嵌套.
案例:打印99乘法表
"""
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
1x4=4 2x4=8 3x4=12 4x4=16
1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
"""
# 1. 外部循环 ✖右边是外部循环
# 2. 内部循环 ✖左边是内部循环i = 1while i <= 9:j = 1while j <= i:print(f'{j}x{i}={j*i}', end='\t')j += 1print('')i += 1
2.for 循环
2.1.range函数
在学习for循环之前, 先来学习range语句. 这是一个最常与for循环一起用的语句.
# 语法:
range(start, stop[, step])
参数说明:
- start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
- stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
- step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
注意: 如果start=stop, 则取不到.
练习: 构建一个1-100之内的偶数列表。
# 构建一个1-100之内的偶数列表. (包含1和100)
a_list = list(range(2, 101, 2))
print(a_list)
2.2.for 循环语法
在Python中,除了while循环语句,还提供了另外一种循环:for循环语句
# 语法:
for 临时变量 in 序列(可迭代对象):# for循环体的代码块# for循环中定义了一个临时变量,那么在整个循环体中都可以使用这个变量,包括循环体内部的if语句或者嵌套的循环, 但是在for循环的循环体外就不要使用此临时变量了.
for循环是一种常见的迭代结构,用于遍历序列中的元素。
在Python中,for循环可以用于遍历 列表,元组,字典,字符串,集合等容器类型的元素,并将这些元素里面的值一个一个的赋值给临时变量,然后执行特定的操作,循环会一直重复执行,直到序列中的所有元素都被遍历完成。对于序列中的每个元素,都会执行一次循环体中代码块。
for循环通常由三大块组成:
- 循环遍历
- 序列(可迭代对象)
- 代码块
for循环简单易懂,代码结构清晰,可读性强,是一种高效的可靠的循环结构。
for循环和while循环两者能完成的功能差不多,但也是有区别的:
- for循环用于遍历序列(例如列表、元组、字符串等)或其他可迭代对象,并且在每次迭代中,都会将序列中的一个元素赋值给循环变量,直到序列中的所有元素都被遍历完毕,循环结束. while循环则用于在条件为真时执行一段代码块,直到条件为假为止.
- for循环不需要显式地计数器变量,也不需要显式地定义循环条件,因为循环变量会自动遍历整个序列.而while循环则需要显式地定义循环条件,并在代码块内控制循环计数器的更新.
总之,for循环适用于已知数量的序列或可迭代对象的遍历,而while循环适用于未知数量的循环执行,需要手动控制循环计数器和条件.
案例1:遍历字符串
# 遍历字符串
python_string = 'hello python'
for i in python_string:print(i)
案例2:求字符串a_string中有多少个字母"i"
# 求字符串a_string中有多少个字母"i"
a_string = "life is short, i use python"
# print(a_string.count('i'))
total = 0
for i in a_string:if i == 'i':total += 1
print(total)
案例3:遍历列表
# 遍历列表
fruits = ['apple', 'banana', 'cherry']
for fruit in fruits:print(fruit)
案例4:打印100次hello python
# 打印100次hello python
for _ in range(100):print("hello python")
案例5:使用for循环完成1-100的求和.
# 使用for循环完成1-100的求和.
total = 0
for i in range(1, 101):total += i
print("1-100的求和结果为:", total)
2.3.for 循环嵌套
# 语法:
for 临时变量1 in 序列1(可迭代对象):# for循环体的代码块# for循环体的代码块# for循环体的代码块for 临时变量2 in 序列2(可迭代对象):# for循环体的代码块# for循环体的代码块# for循环体的代码块for i in range(10):print(f"外层循环i:{i}")for j in range(10):print(f"内层循环j:{j}")
案例:打印99乘法表。
"""
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
1x4=4 2x4=8 3x4=12 4x4=16
1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
"""
# 1. 外部循环 ✖右边是外部循环 控制行数
# 2. 内部循环 ✖左边是内部循环 控制列数for i in range(1, 10):for j in range(1, i + 1):print(f'{j}x{i}={j * i}', end='\t')print('')
3.关键字(break、continue)
- continue 语句用来告诉Python跳过当前循环的剩余语句,然后继续进行下一轮循环.
- break用来跳出整个循环
continue和break在嵌套循环中, 只对当前循环起作用。
案例1:使用for循环打印10以内的奇数, 使用continue。
for i in range(1, 11):if i % 2 != 0:print(i)continue
案例2:使用死循环打印1-10的整数。
# 使用while死循环
i = 1
while True:if 0 < i <= 10:print(i)i += 1else:break
案例3:计算number序列中数字大于3的数字的总和。
# 计算number序列中数字大于3的数字的总和
numbers = [2, 5, 3, 7, 8, 4, 1, 9, 10]
total = 0
for num in numbers:if num <= 3:continuetotal += num
print("numbers序列中数字大于3的数字总和:", total)