目录
一、引言
二、if 语句
(一)基础语法与功能
(二)应用示例
(三)条件表达式与关系运算符
(四)if - else 条件语句
(五)多重 if 语句(elif 的使用)
(六)if 语句常见问题
三、Python 的循环
(一)while 循环
(二)for 循环
(三)循环控制
四、总结
在 Python 编程领域,流程控制是构建高效、灵活程序的关键要素。它赋予程序根据不同条件和需求改变执行路径的能力,使程序能够处理各种复杂的任务场景。Python 提供了丰富多样的流程控制语句,如 if 语句、while 循环、for 循环以及循环控制语句(break 和 continue),这些语句相互配合,为开发者提供了强大的编程工具集。
if 语句是 Python 中用于条件判断的基本语句,其核心作用是根据给定条件的真假来决定是否执行特定代码块。语法格式如下:
if condition:
# 代码块1(当条件为True时执行)
else:
# 代码块2(当条件为False时执行)
其中,condition
是一个布尔表达式,其计算结果要么为True
(真),要么为False
(假)。冒号是 Python 语法的严格要求,用于标识代码块的开始。代码块中的语句需要保持相同的缩进(通常为 4 个空格),以明确其属于if
或else
的作用范围。
num = int(input("请输入一个整数:"))
if num > 0:
print("输入的数是正数")
else:
print("输入的数不是正数")
在这段代码中,通过input()
函数获取用户输入的整数,并将其转换为整型存储在变量num
中。然后,if
语句判断num
是否大于 0。若条件成立,执行if
代码块,输出 “输入的数是正数”;否则,执行else
代码块,输出 “输入的数不是正数” 。
2. 成绩判断示例:
#coding=utf-8
print("请输入学生考试成绩")
score = int(input())
if score >= 60:
print("合格")
此代码用于判断学生考试成绩是否合格。从用户处获取成绩并转换为整型后,使用if
语句判断成绩是否大于等于 60。若满足条件,输出 “合格”。在 Python 3 中,input()
方法默认返回字符串类型,所以需要使用int()
函数进行类型转换,以确保后续的数值比较正确。
条件表达式是if
语句的核心组成部分,它由操作数和关系运算符构成,计算结果为布尔值。常用的关系运算符包括:
关系运算符 | 说明 | 示例 | 结果 |
---|---|---|---|
== |
等于 | 10 == 9 |
False |
!= |
不等于 | 10 != 9 |
True |
> |
大于 | 10 > 9 |
True |
< |
小于 | 10 < 9 |
False |
>= |
大于等于 | 10 >= 9 |
True |
<= |
小于等于 | 10 <= 9 |
False |
这些关系运算符用于比较两个操作数的大小或相等关系,从而为if
语句提供判断依据。例如,在成绩判断示例中的score >= 60
,就是一个使用>=
关系运算符的条件表达式,当score
的值大于等于 60 时,该表达式结果为True
,否则为False
。
if - else
语句在基本if
语句的基础上进行了扩展,使程序能够根据条件的真假执行不同的代码块,增强了程序的灵活性。语法格式为:
if 条件表达式:
语句块1
else:
语句块2
当条件表达式的计算结果为True
时,执行语句块 1;当结果为False
时,执行语句块 2。
在实际编程中,常常需要根据多个不同条件进行复杂判断,此时可使用elif
(else if 的缩写)关键字来构建多重if
语句。语法格式如下:
if 条件表达式1:
语句块1
elif 条件表达式2:
语句块2
elif 条件表达式3:
语句块3
...
else:
语句块n
程序会自上而下依次判断每个条件表达式。当某个条件表达式为True
时,执行对应的语句块,然后跳过整个if - elif - else
结构;若所有条件表达式都为False
,则执行else
后的语句块(else
部分为可选项,根据实际需求决定是否添加)。
if - elif - else
语句时,条件判断的顺序至关重要。由于程序是按顺序依次判断条件,一旦某个条件成立,后续的条件判断将不再执行。例如,在学生成绩分级的代码中,如果将条件表达式的顺序颠倒,把score >= 60
放在score >= 90
之前,那么当输入成绩为 100 时,首先判断score >= 60
成立,程序会直接输出 “合格”,而不会再判断score >= 90
,导致无法得到正确的成绩分级结果。if
语句中,语句块的缩进必须严格一致。哪怕只有一个空格的差异,也会被视为不同的代码块,从而导致程序报错。例如:score = int(input())
if score >= 90:
print('优秀') # 没有缩进,报错
或者:
score = int(input())
if score >= 90:
print("优秀1") # 没有缩进
print("优秀2") # 多了一个空格,报错
在编程过程中,经常会遇到需要重复执行某段代码的情况,Python 提供了while
和for
两种循环语句来满足这一需求。
while
循环的语法格式为:while 条件表达式:
# 循环操作语句
在执行while
循环时,首先判断条件表达式的值。若为True
,则执行循环操作语句;执行完毕后,再次判断条件表达式,如此循环往复,直到条件表达式的值为False
时,跳出循环,执行while
语句后面的代码。
2. 简单示例:计数循环:
count = 0
while count < 5:
count = count + 1
print(count)
在这个示例中,初始化变量count
为 0,然后在while
循环中,只要count
小于 5,就执行count = count + 1
(即count
自增 1),并输出count
的值。最终输出结果为 1、2、3、4、5。
3. 复杂示例:计算课程平均成绩:
i = 1
sum = 0
while i <= 5:
print("请输入第%d门课程的考试成绩" % i)
sum = sum + int(input())
i = i + 1
avg = sum / (i - 1)
print("5门课程的平均成绩是%d" % avg)
此代码用于计算 5 门课程的平均成绩。通过while
循环,依次提示用户输入每门课程的成绩,并将成绩累加至变量sum
中。循环结束后,计算平均成绩并输出。这里使用了字符串格式化输出,%d
作为占位符,用于将整型变量的值插入到字符串中。
4. Python 的注释:注释是代码中用于解释说明的文本,有助于提高代码的可读性和可维护性。Python 中使用#
开头表示注释内容。注释分为单行注释和行内注释:
#
,整行内容被视为注释。例如:# 这是一个单行注释,用于解释下面代码的功能
i = 1
#
开头。例如:i = 1 # 初始化变量i,用于循环计数
注释并非每行都需要添加,通常在关键代码段、复杂逻辑处或可能引起误解的地方添加注释,以帮助其他开发者(或未来的自己)快速理解代码意图。
5. 字符串的格式化输出:字符串格式化是将变量的值插入到字符串中的一种技术,使字符串能够动态地展示不同的数据。在 Python 中,常用的格式化替代符有:
%d
:用于插入整型数据。%s
:用于格式化字符串。%f
:用于格式化浮点数字。num = 5
numStr = "5"
numF = 5.55
print("第%d名" % num)
print("第%s名" % numStr)
print("浮点数是:%f" % numF)
输出结果为:
第5名
第5名
浮点数是:5.550000
字符串中还可以使用多个替代符,通过元组或字典来传递多个变量的值。使用元组时,变量顺序要与替代符顺序一致;使用字典时,通过键来获取对应的值。例如:
first = 1
second = 2
print("第%d名和第%d名" % (first, second)) # 使用元组
num = {"first": 1, "second": 2}
print("第%(first)d名和第%(second)d名" % num) # 使用字典
输出结果均为:
第1名和第2名
while
循环中,可以包含另一个while
循环,形成嵌套循环结构。这种结构适用于处理需要多层循环控制的复杂任务。例如,接收 2 名学生的 5 门课程考试成绩,并计算每个人的平均成绩:j = 1
prompt = "请输入学生姓名:"
while j <= 2:
sum = 0
i = 1
name = input(prompt)
while i <= 5:
print("请输入第%d门课程的考试成绩" % i)
sum = sum + int(input())
i = i + 1
avg = sum / (i - 1)
print("%s的平均成绩是:%d" % (name, avg))
j = j + 1
print("学生成绩输入完成")
在这个示例中,外层while
循环由变量j
控制,用于输入 2 名学生的姓名;内层while
循环由变量i
控制,用于输入每个学生的 5 门课程成绩。在内层循环中,累加成绩并计算平均成绩,最后输出每个学生的平均成绩。
for
循环是 Python 中另一种重要的循环结构,它主要用于遍历可迭代对象(如字符串、列表、元组等)或结合range()
函数进行指定次数的循环操作。
for letter in 'Python':
print('Current letter :%s' % letter)
上述代码中,for
循环逐个遍历字符串'Python'
中的字符,并通过字符串格式化输出每个字符。
fruits = ["西瓜", "苹果", "葡萄"]
for fruit in fruits:
print(fruit)
此代码遍历列表fruits
,依次输出列表中的每个元素。同样,遍历元组的方式与之类似,因为元组也是可迭代对象。
range()
函数常用于生成一个整数序列,配合for
循环可以实现指定次数的循环。range()
函数的常见用法有:print(list(range(0, 5))) # 生成从0到4的整数序列,结果为[0, 1, 2, 3, 4]
print(list(range(0, 5, 2))) # 生成从0到4,间隔为2的整数序列,结果为[0, 2, 4]
其中,range(start, stop, step)
函数中,start
表示起始值(默认为 0),stop
表示结束值(不包含在生成的序列中),step
表示步长(默认为 1)。
2. for 循环示例:计算课程平均成绩:
subjects = ("Python", "MySQL", "Linux")
sum = 0
for i in subjects:
print("请输入%s考试成绩:" % i)
score = int(input())
sum += score
avg = sum / len(subjects)
print("小明的平均成绩是%d" % avg)
这段代码通过for
循环遍历课程名称元组subjects
,依次提示用户输入每门课程的成绩,并累加成绩。最后计算并输出平均成绩。
3. 逻辑运算符:Python 提供了and
(逻辑与)、or
(逻辑或)、not
(逻辑非)三种逻辑运算符,用于组合和操作布尔值。
and
逻辑与:只有当两个操作数都为True
时,表达式的值才为True
;否则为False
。例如:True and False
结果为False
。or
逻辑或:只要两个操作数中有一个为True
,表达式的值就为True
;只有当两个操作数都为False
时,表达式的值才为False
。例如:True or False
结果为True
。not
逻辑非:对操作数进行求反运算,若操作数为True
,则表达式的值为False
;若操作数为False
,则表达式的值为True
。例如:not True
结果为False
。score = 180
if (score < 0 or score > 100):
print("成绩错误,不能小于0或大于100")
for
循环也支持嵌套使用,以处理更复杂的循环需求。例如,接收 2 名学生的 5 门课程考试成绩,并计算每个人的平均成绩:students = ['小明', '小张']
subjects = ("Python", "MySQL", "Linux")
for student in students:
sum = 0
for subject in subjects:
print("请输入%s的%s考试成绩:" % (student, subject))
score = int(input())
sum += score
avg = sum / len(subjects)
print("%s的平均成绩是%d" % (student, avg))
在这个示例中,外层for
循环遍历学生列表students
,内层for
循环遍历课程元组subjects
。通过嵌套循环,依次输入每个学生每门课程的成绩,并计算平均成绩。此外,还可以在for
循环中嵌套while
循环,根据具体需求灵活构建循环逻辑。
在使用while
和for
循环时,有时需要改变循环的正常执行顺序,这时就需要用到循环控制语句break
和continue
。
break
语句用于在循环体中跳出整个循环,不再执行循环剩余的代码。例如,在计算学生平均成绩时,当输入的成绩无效(小于 0 或大于 100)时,使用break
退出循环:students = ['小明', '小张']
subjects = ("Python", "MySQL", "Linux")
for student in students:
sum = 0
i = 0
while i < len(subjects):
print("请输入%s的%s考试成绩:" % (student, subjects[i]))
score = int(input())
if (score < 0 or score > 100):
print('输入的成绩需要大于0且小于100,循环退出')
break
sum += score
i = i + 1
avg = sum / len(subjects)
print('%s的平均成绩是%d' % (student, avg))
当输入成绩不符合范围时,if
条件成立,执行break
语句,跳出内层while
循环,进入下一个学生的成绩输入流程。需要注意的是,break
只影响离它最近的一层循环。
2. continue 语句:continue
语句用于跳过当前循环中的剩余代码,直接进入下一次循环。例如,在输入学生成绩时,要求成绩在 0 到 100 之间,若输入的成绩不符合范围,则提示重新输入,此时可使用continue
语句:
students=['小明','小张']
subjects = ('Python', 'MySQL', 'Linux'')
#外层循环
for student in students:
sum = 0
i = 0
while(i 100):
print(输入的成绩需要大于0或小100,循环继续')
continue ##如果输入的数值不满足条件,则让重新输入
sum += score
i = i+1
avg = sum / len(subjects)
print('%s的平均成绩是%d'%(student,avg)) #输出结果
本文档聚焦于 Python 流程控制,深入讲解了 if 语句、循环语句(while 和 for)以及循环控制语句(break 和 continue)的使用,为 Python 编程奠定了坚实基础。
if condition:
,冒号后缩进的代码块在条件成立时执行,还可搭配else
处理条件不成立的情况。例如判断整数正负,num = int(input("请输入一个整数:")); if num > 0: print("输入的数是正数"); else: print("输入的数不是正数")
。条件表达式借助关系运算符(如==
、!=
等)进行运算,结果为布尔值。if - else
可根据条件真假决定执行不同语句块。而多重 if 语句通过elif
关键字处理多路径判断,像学生成绩分级,根据不同分数段输出 “优秀”“良好”“合格”“需要努力” 。使用时要注意条件顺序,避免逻辑错误,同时保证语句块正确缩进,防止语法错误。while 条件表达式:
,先判断条件,为真则执行循环体。如计算 5 门课程平均成绩,通过循环输入成绩并累加,最后计算平均。循环中可使用字符串格式化输出(如print("请输入第%d门课程的考试成绩" % i)
),也可进行嵌套循环,处理复杂任务,如输入 2 名学生的 5 门课程成绩并计算平均。range()
函数指定循环次数。如遍历字符串for letter in 'Python': print('Current letter :%s' % letter)
。在处理循环逻辑时,逻辑运算符(and
、or
、not
)可用于构建复杂条件表达式,如判断成绩有效性if (score < 0 or score > 100): print("成绩错误,不能小于0或大于100")
。for 循环同样支持嵌套,用于解决多层循环问题。break
可跳出整个循环。计算学生平均成绩时,若成绩无效(小于 0 或大于 100),可使用break
退出循环,不再继续处理当前学生成绩。continue
提示重新输入,确保成绩有效。