Python流程控制

目录

一、引言

二、if 语句

(一)基础语法与功能

(二)应用示例

(三)条件表达式与关系运算符

(四)if - else 条件语句

(五)多重 if 语句(elif 的使用)

(六)if 语句常见问题

三、Python 的循环

(一)while 循环

(二)for 循环

(三)循环控制

四、总结


一、引言

在 Python 编程领域,流程控制是构建高效、灵活程序的关键要素。它赋予程序根据不同条件和需求改变执行路径的能力,使程序能够处理各种复杂的任务场景。Python 提供了丰富多样的流程控制语句,如 if 语句、while 循环、for 循环以及循环控制语句(break 和 continue),这些语句相互配合,为开发者提供了强大的编程工具集。

二、if 语句

(一)基础语法与功能

if 语句是 Python 中用于条件判断的基本语句,其核心作用是根据给定条件的真假来决定是否执行特定代码块。语法格式如下:

if condition:
    # 代码块1(当条件为True时执行)
else:
    # 代码块2(当条件为False时执行)

其中,condition是一个布尔表达式,其计算结果要么为True(真),要么为False(假)。冒号是 Python 语法的严格要求,用于标识代码块的开始。代码块中的语句需要保持相同的缩进(通常为 4 个空格),以明确其属于ifelse的作用范围。

(二)应用示例

  1. 判断正数示例
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 - else语句在基本if语句的基础上进行了扩展,使程序能够根据条件的真假执行不同的代码块,增强了程序的灵活性。语法格式为:

if 条件表达式:
    语句块1
else:
    语句块2

当条件表达式的计算结果为True时,执行语句块 1;当结果为False时,执行语句块 2。

(五)多重 if 语句(elif 的使用)

在实际编程中,常常需要根据多个不同条件进行复杂判断,此时可使用elif(else if 的缩写)关键字来构建多重if语句。语法格式如下:

if 条件表达式1:
    语句块1
elif 条件表达式2:
    语句块2
elif 条件表达式3:
    语句块3
...
else:
    语句块n

程序会自上而下依次判断每个条件表达式。当某个条件表达式为True时,执行对应的语句块,然后跳过整个if - elif - else结构;若所有条件表达式都为False,则执行else后的语句块(else部分为可选项,根据实际需求决定是否添加)。

(六)if 语句常见问题

  1. 逻辑错误:在使用if - elif - else语句时,条件判断的顺序至关重要。由于程序是按顺序依次判断条件,一旦某个条件成立,后续的条件判断将不再执行。例如,在学生成绩分级的代码中,如果将条件表达式的顺序颠倒,把score >= 60放在score >= 90之前,那么当输入成绩为 100 时,首先判断score >= 60成立,程序会直接输出 “合格”,而不会再判断score >= 90,导致无法得到正确的成绩分级结果。
  2. 缩进错误:Python 通过缩进来区分代码块,在if语句中,语句块的缩进必须严格一致。哪怕只有一个空格的差异,也会被视为不同的代码块,从而导致程序报错。例如:
score = int(input())
if score >= 90:
    print('优秀')  # 没有缩进,报错

或者:

score = int(input())
if score >= 90:
    print("优秀1")  # 没有缩进
    print("优秀2")  # 多了一个空格,报错

  1. 遗漏冒号:对于从其他编程语言转向 Python 的开发者,容易因习惯问题忘记在条件表达式后面添加冒号。这是 Python 语法的关键部分,缺少冒号会导致语法错误,需要通过大量练习来养成正确的编码习惯。

三、Python 的循环

在编程过程中,经常会遇到需要重复执行某段代码的情况,Python 提供了whilefor两种循环语句来满足这一需求。

(一)while 循环

  1. 语法与执行逻辑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名

  1. while 循环嵌套:在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 循环

  1. for 循环的遍历方式for循环是 Python 中另一种重要的循环结构,它主要用于遍历可迭代对象(如字符串、列表、元组等)或结合range()函数进行指定次数的循环操作。
    • 遍历字符串
for letter in 'Python':
    print('Current letter :%s' % letter)

上述代码中,for循环逐个遍历字符串'Python'中的字符,并通过字符串格式化输出每个字符。

  • 遍历列表和元组
fruits = ["西瓜", "苹果", "葡萄"]
for fruit in fruits:
    print(fruit)

此代码遍历列表fruits,依次输出列表中的每个元素。同样,遍历元组的方式与之类似,因为元组也是可迭代对象。

  • 结合 range () 函数循环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")

  1. for 循环嵌套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循环,根据具体需求灵活构建循环逻辑。

(三)循环控制

在使用whilefor循环时,有时需要改变循环的正常执行顺序,这时就需要用到循环控制语句breakcontinue

  1. break 语句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 编程奠定了坚实基础。

  1. if 语句:用于依据条件执行不同代码块。基本语法为if condition:,冒号后缩进的代码块在条件成立时执行,还可搭配else处理条件不成立的情况。例如判断整数正负,num = int(input("请输入一个整数:")); if num > 0: print("输入的数是正数"); else: print("输入的数不是正数")。条件表达式借助关系运算符(如==!=等)进行运算,结果为布尔值。
  2. if - else 条件语句与多重 if 语句if - else可根据条件真假决定执行不同语句块。而多重 if 语句通过elif关键字处理多路径判断,像学生成绩分级,根据不同分数段输出 “优秀”“良好”“合格”“需要努力” 。使用时要注意条件顺序,避免逻辑错误,同时保证语句块正确缩进,防止语法错误。
  3. Python 的循环
    • while 循环:语法为while 条件表达式:,先判断条件,为真则执行循环体。如计算 5 门课程平均成绩,通过循环输入成绩并累加,最后计算平均。循环中可使用字符串格式化输出(如print("请输入第%d门课程的考试成绩" % i)),也可进行嵌套循环,处理复杂任务,如输入 2 名学生的 5 门课程成绩并计算平均。
    • for 循环:通过遍历元素实现循环。可遍历字符串、列表、元组等,也能结合range()函数指定循环次数。如遍历字符串for letter in 'Python': print('Current letter :%s' % letter) 。在处理循环逻辑时,逻辑运算符(andornot)可用于构建复杂条件表达式,如判断成绩有效性if (score < 0 or score > 100): print("成绩错误,不能小于0或大于100")。for 循环同样支持嵌套,用于解决多层循环问题。
  4. 循环控制
    • break 语句:在循环中使用break可跳出整个循环。计算学生平均成绩时,若成绩无效(小于 0 或大于 100),可使用break退出循环,不再继续处理当前学生成绩。
    • continue 语句:用于跳过当前循环剩余代码,继续下一次循环。输入学生成绩时,若成绩不符合范围,使用continue提示重新输入,确保成绩有效。

你可能感兴趣的:(前端,数据库,服务器)