【自动化运维】Python 流程控制

Python 流程控制

文章目录

  • Python 流程控制
    • 前言
    • 一、if语句
      • 1.1、if语句的语法及应用示例
      • 1.2、条件表达式
      • 1.3、if-else条件语句
      • 1.4、多重if语句
      • 1.5、if语句的常见问题
    • 二、Python的循环之while
      • 2.1、while语句
      • 2.2、Python的注释
      • 2.3、字符串的格式化输出
      • 2.4、while循环嵌套
    • 三、Python的循环之for
      • 3.1、for循环的几种方式
      • 3.2、for循环示例
      • 3.3、逻辑运算符
      • 3.4、for循环嵌套
      • 3.5、for循环嵌套while循环
    • 四、循环控制
      • 4.1、break语句
      • 4.2、continue语句

前言

  • Python流程控制是Python编程中非常重要的一部分,它用于控制程序的执行流程。Python提供了多种流程控制语句,包括if语句、while循环、for循环、break和continue语句等。这种流程控制在各个语言中都是大同小异的。

一、if语句

  • if语句用于根据条件执行不同的代码块。condition是一个布尔表达式,后面一定要加冒号,这是Python语法规定。if语句后面的条件表达式是可以加括号的,但并不是必须的,使用括号可以使代码更加清晰易读,特别是在复杂的条件表达式中。然而,括号并不是语法要求,可以根据人格编码风格和团队约定进行选择。

1.1、if语句的语法及应用示例

  • if语句用于判断某个条件是否成立。如果成立,则执行语句内的程序;否则跳过if语句,执行后面的内容。

  • 语法格式如下:

if condition:
    # 代码块
else:
    # 代码块
# 示例1:下面的代码演示了如果使用if语句来判断一个数是否为正数:
num = int(input("请输入一个整数:"))  # 输入的数字将会被转换为int 数字类型,默认是字符串类型(str)
if (num > 0):   
    print("输入的是正数")
else:
    print("输入的不是正数")
# 示例2:接收学生的考试成绩,使用if语句判断。如果成绩大于等于60.输出”合格“
print("请输入学生考试成绩:")
score = int(input())
print(score >= 60)  # 如果输入的成绩大于等于60将会输出True,否则输出Fasle
if (score >= 60):
    print("合格")
else:
    print("需要努力")

1.2、条件表达式

  • 使用if语句时,后面要用条件表达式和关系运算符,它们可以经过运算得到布尔值。如前面示例的score >= 60就是一个使用关系运算符>=的条件表达式,表示:如果score大于等于60,则表达式的结果是True(真);否则False(假)。条件表达式的语法如下。
操作数  关系运算符 操作数
  • 关系运算符的前后2个数值,条件表达式的结果是布尔值
# 关系运算符 说明:
==  等于
!=  不等于
>  大于
<  小于
>=  大于等于
<=  小于等于
# 示例3:关系运算符的运算结果:
print(10 == 9)  # False 假
print(10 != 9)  # True 真
print(10 > 9)   # True 真
print(10 < 9)   # False 假
print(10 >= 9)  # True 真
print(10 <= 9)  # False 假



# 运行结果如下
False
True
True
False
True
False

1.3、if-else条件语句

  • if语句还可以加上else关键字,根据条件判断,决定执行不同的语句块。当条件为真时,执行语句块1。当条件为假时,执行语句2,语法格式:
if 条件表达式:
    语句块1 
else:
    语句块2
# 示例4:接收学生的考试成绩,使用if语句判断。如果考试成绩大于等于60分,输出”合格“;否则输出”需要努力“
print("请输入学生考试成绩:")
score = int(input())
if (score >= 60):
    print("合格")
else:
    print("需要努力")

1.4、多重if语句

  • 使用if-else语句通过条件判断使用程序能够有2条执行路径,但有时还需要更多条路径进行处理,这时可以加入elif关键字处理。语句格式如下:
if 条件表达式1:
    语句块1
elif 条件表达式2:
    语句块2
elif 条件表达式3:
    语句块3
else:
    语句块4
# 接收学生的考试成绩。如果考试成绩大于等于90,则输出”优秀“。如果考试成绩小于90分且 大于等于70分,则输出”良好“。如果考试成绩小于70分且大于等于60分,则输出”合格“。如果考试成绩小于60分,则输出”需要努力“
print("请输入学生考试成绩")
score = int(input())
if (score >= 90):
    print("优秀")
elif (score >= 70):
    print("良好")
elif (score >= 60):
    print("合格")
else:   # else关键字是可选的
    print("需要努力")

1.5、if语句的常见问题

# 逻辑错误
print("请输入学生考试成绩")
score = int(input())
if (score >= 60):   # 如果直接匹配到 >= 60那么就不会再去匹配 >= 90的if判断了
    print("合格")
elif (score >= 70):
    print("良好")
elif  (score >= 90):
    print("优秀")
else:   # else关键字是可选的
    print("需要努力")
# 缩进错误
print("请输入学生考试成绩")
score = int(input())
if (score >= 60):
print("合格")  # 这里没有缩进就会直接报错


# 此脚本加了pass占位符将不会报错
print("请输入学生考试成绩")
score = int(input())
if (score >= 60):
    pass
print("合格")

二、Python的循环之while

  • 编写程序时经常有一些代码块需要重复运行,Python提供了while和for语句实现循环操作。

2.1、while语句

  • 循环的条件表达式后面依旧要加入冒号,while语句只有当条件为True(真)的时候才会执行相应的代码,否则跳出循环执行while语句后面的语句。
# 示例6:当count值小于正整数5时,执行加1操作。当count小于5时,输出count的值
count = 0
while (count < 5):
    count = count + 1
    print(count)
    
    
    
# 代码执行结果
1
2
3
4
5
# 输入5门课程的考试成绩,计算平均分并输出。
i = 1
sum = 0
while (i < 5):
    print("请输入第%d门课程的考试成绩" % i)   # 字符串的格式化是将若干值插入带有"%"替代符的字符串中,从而可以动态地输出字符串
    sum = sum + int(input())  # 输入的考试成绩加sum然后重新赋值给sum变量
    i = i + 1
    avg = sum / (i - 1)
print("5门课程的平均成绩是%d" % avg)



# 执行效果如下
请输入第1门课程的考试成绩
50
请输入第2门课程的考试成绩
80
请输入第3门课程的考试成绩
70
请输入第4门课程的考试成绩
90
5门课程的平均成绩是72

2.2、Python的注释

  • 对于编写好的代码,如果不加注释那么在以后的阅读或者是给别人阅读将会是一见非常头疼的事情,因为还要重新捋一遍代码的思路,所有在有必要的代码除加注释是一件非常符合规范的写法,比如在比较难以理解的地方加入注释,注释如果在代码后面加入那么注释后面的内容就全部都是注释,不会有任何效果,如果代码独占一行,那么这一行的内容就全部不会有任何效果,只是起到读的作用。
i = 1 # 初始化循环计数器
sum = 0
while (i < 5):
    print("请输入第%d门课程的考试成绩" % i)
    sum = sum + int(input())  # 输入的考试成绩加sum然后重新赋值给sum变量
    i = i + 1  # 每次执行 i + 1 = i
    avg = sum / (i - 1)  # 计算出平均值
print("5门课程的平均成绩是%d" % avg)  # 把avg的值,动态格式化为%d的值(替换)

2.3、字符串的格式化输出

  • 字符串中的%d表示插入的是一个整型数据,%s表示插入的是一个字符串类型,%f表示插入的是一个浮点型
  • 字符串后面的%i 表示获取变量 i的值
# 示例8:常用替代符的使用情况
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("first的值:%d\nsecond的值:%d" %(first,second))  # \n:换行输出


# 运行结果如下
first的值:1
second的值:2


# 使用时注意替代符和变量的顺序,位置不能放错,是否可能会出现类型不匹配的问题
  • 还可以使用字典格式多个值
num = {"first":1,"second":2}
print("第%(first)d和第%(second)d" %num)


# 因为字典时无需的,所以使用字典时通过见获得与之对应的值

2.4、while循环嵌套

  • 在while语句中,可以包含另一个while语句,即:使用while语句可以实现嵌套循环
# 使用while语句分别接收2名学生的5门课程考试成绩,计算并输出每个人的平均成绩
j = 1  # 初始化外层循环计算器 j
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("学生成绩输入完成")

三、Python的循环之for

  • for语句是另一种用于控制循环结构的方式,Python的while时使用条件判断主席那个循环,而for是使用遍历元素的方式进行循环。

3.1、for循环的几种方式

# for循环可以对字符串进行遍历,逐个获得字符串的每个字符
for letter in "Python":
    print("current letter:%s" %letter)
    
    
# 运行结果如下
current letter:P
current letter:y
current letter:t
current letter:h
current letter:o
current letter:n
# for循环可以对列表和元组进行遍历
fruits = ["西瓜","苹果","普调"]
for fruit in fruits:
    print("当前的是%s" %fruit)
    
    
# 执行结果如下
当前的是西瓜
当前的是苹果
当前的是普调



# 备注:取值列表也可以使用元组
# 需要循环操作相同的内容时,可以用for循环和range()函数结合使用,先看看range()喊出的作用

print(list(range(0,5)))
[0, 1, 2, 3, 4]

print(list(range(0,5,2)))
[0, 2, 4]


# 备注:list(range(0,5,2))表示列表值0到5(不包含5),间隔2,即0、2、4

3.2、for循环示例

# 示例11:接收某个学生三门课程的考试成绩,计算出平均成绩
subjects = ["Python","MySQL","Linux"] # 课程名称
sum = 0
for i in subjects:
    print("请输入%s的成绩" % i)
    score = int(input())
    sum += score  # 与sum = sum + score 等价
    avg = sum / len(subjects)  # len(subjects)  subjects变量里面有3个值,所以除3
print("小明的平均成绩是%d" % avg)


# 代码运行效果如下
请输入Python的成绩
50
请输入MySQL的成绩
80
请输入Linux的成绩
90
小明的平均成绩是73





# 更新之后的玩法
subjects = ["Python","MySQL","Linux"] # 课程名称
sum = 0
print("请输入姓名和考试成绩")
name = input("姓名:")
for i in subjects:


    print("请输入%s的%s的成绩" % (name,i))
    score = int(input())
    sum += score  # 与sum = sum + score 等价
    avg = sum / len(subjects)  # len(subjects)  subjects变量里面有3个值,所以除3
print("%s的平均成绩是%d" % (name,avg))


# 执行效果如下
请输入姓名和考试成绩
姓名:王子恒
请输入王子恒的Python的成绩
50
请输入王子恒的MySQL的成绩
80
请输入王子恒的Linux的成绩
90
王子恒的平均成绩是73

3.3、逻辑运算符

  • Python的逻辑运算符
    • and:逻辑与,如果两个操作都为True,则表达式值为True
    • or:逻辑与,如果两个数中有一个为True,则表达式为True
    • not:逻辑非,如果操作数值为True,则表达式值为False,如果值为False,则表达式的值为True
# 演示逻辑运算符的使用方式
print(not True)  # False(假)
False

print(True and False)   # False(假)
False

print(True or False)  # True(真)
True



not 是求反运算,所以not True的结果是False
and 是与运算,只要一个值是False,结果就是False
or 是或运算,只要有一个值为True,结果就是True
# 下面对成绩做一个有效性的判断
score = 180
if (score < 0 or score > 100):
    print("成绩错误,不能小于0或大于100")
    
# 执行效果如下    
成绩错误,不能小于0或大于100

3.4、for循环嵌套

  • 与while循环一样,for语句也可以使用嵌套的方式
# 示例12:使用for语句分别接收2名学生的5门课程考试成绩,计算并输出每个人的平均成绩
students = ["小明","小张"]
subjects = ("Pyton","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(students)
    print("%s的平均成绩是%d" %(student,avg))  # 输出结果

3.5、for循环嵌套while循环

students = ["小明","小张"]
subjects = ("Python","MySQL","Linux")
for student in students:
    sum = 0
    i = 0
    while (i < len(subjects)):  # 外层循环
        print("请输入%s的 %s考试成绩:" %(student,subjects[i]))  # i=数字,subjects[i]取出这个考试的课程名字
        score = int(input())
        sum += score
        i = i + 1
    avg = sum / len(subjects)
    print("%s的平均成绩是%d" %(student,avg))

四、循环控制

  • 使用while和for语句执行循环操作时,有可能需要改变循环的正常执行顺序,这时就需要用循环控制语句实现,循环控制语句有break和continue。

4.1、break语句

  • 在循环语句块中使用break语句,可以跳出整个循环
# 示例13:对输出平均成绩的代码进行修改,当成绩无效时,使用break退出循环
students = ["小明","小张"]
subjects = ("Python","MySQL","Linux")
for student in students:
    sum = 0
    i = 0
    while (i < len(subjects)):  # 外层循环
        print("请输入%s的 %s考试成绩:" %(student,subjects[i]))  # i=数字,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))
    
    
# 代码执行下过如下
请输入小明的 Python考试成绩:
1000  # 输入的数值大于条件中的某个判断,退出此次循环
输入的成绩需要大于0小于100,循环退出
小明的平均成绩是0
请输入小张的 Python考试成绩:

4.2、continue语句

  • 在Python中,continue语句用于跳过当前循环中剩余代码,并继续执行下一次循环。当continue语句被执行时,程序将立即跳转到循环的开头,而不执行Continue语句之后的代码。它通常用于条件判断内部,用控制循环体的执行流程
students = ["小明","小张"]
subjects = ("Python","MySQL","Linux")
for student in students:
    sum = 0
    i = 0
    while (i < len(subjects)):  # 外层循环
        print("请输入%s的 %s考试成绩:" %(student,subjects[i]))  # i=数字,subjects[i]取出这个考试的课程名字

        score = int(input())
        if (score < 0 or score > 100):
            print("输入的成绩需要大于0小于100,循环继续执行")
            continue;  # 如果输入的数值不满足条件,则退出整个循环,进入小张的循环
        sum += score
        i = i + 1
    avg = sum / len(subjects)
    print("%s的平均成绩是%d" %(student,avg))

你可能感兴趣的:(python,运维,自动化,开发语言,运维开发)