python程序控制结构

文章目录


一、python程序控制结构介绍

计算机程序由多行代码组成,这些代码是按照一定的结构来组织的,这些结构称为程序控制结构。

python程序的三种结构:

  • 顺序结构是最简单的一种结构,计算机在执行顺序结构的程序是,按照书写的代码的先后顺序,自上而下的逐条执行,中间没有跳跃和重复。
  • 选择结构也称为分支结构,程序根据条件判断结构来选择不同的执行路径,根据分支路径的完备性选择结构包括单分支结构和双分支结构,双分支结构组合形成多分支结构。
  • 循环结构是让计算机重复执行某些语句的结构,在循环结构中,也存在一个条件,计算机执行到循环结构时,会根据条件是否满足来判断是否需要重复执行某些语句,执行一次那些语句后,再对条件进行判断,看是否需要再一次执行那些语句,如果不需要就退出循环结构。

二、顺序结构

输入和输出都是以计算机主机作为主体,从计算机向外部设备输送数据称为输出,从外部设备向计算机输送数据称为输入。

2.1、print()函数

在Python中,print()函数是用于将指定的内容打印到控制台;可以打印文本字符串、数字、变量等。

print()函数的功能:

  • 输出常量信息,如果希望输出常量,就将常量写在输出项的位置,直接输出该常量的值。
  • 输出变量的值,如果希望输出变量的值,就将变量名写在输出项的位置,输出执行运算后该变量的值。
  • 输出表达式的值,如果希望计算并输出表达式的值,就在输出项的位置书写表达式,输出该表达式计算的结果。
  • 输出多项内容时需要使用","将其隔离,即可输出多项内容。

以下是print()函数的使用:

python 复制代码
print("Hello, World!")

D:\pythonLED\python.exe E:/pythonProject/1.py
Hello, World!

Process finished with exit code 0
python 复制代码
name = "Alice"
age = 30
print("My name is", name, "and my age is", age)

D:\pythonLED\python.exe E:/pythonProject/1.py
My name is Alice and my age is 30

Process finished with exit code 0

2.2、end参数

在 Python 的 print() 函数中,end 参数表示在打印内容后要添加的结尾字符,默认情况下是换行符 "\n"。当使用 print() 函数打印多个内容时,每次调用 print() 函数默认会在内容后自动添加换行符,使得每个内容都单独显示在一行上。

通过指定 end 参数,可以改变默认的结尾字符为其他字符,或者干脆不添加结尾字符。

以下是end参数的使用:

python 复制代码
print("Hello", end=" ")
print("World", end="!!!")

D:\pythonLED\python.exe E:/pythonProject/1.py
Hello World!!!
Process finished with exit code 0
python 复制代码
print("Hello", end="")
print("World")

D:\pythonLED\python.exe E:/pythonProject/1.py
HelloWorld

Process finished with exit code 0

2.3、input()函数

input()函数的功能是从键盘获取数据,然后保存到指定的变量中,input()函数获取的数据都以字符串的形式输入,即使通过键盘输入的是数字,input()函数得到的也是字符串,如果希望把键盘输入的数据转为数值类型,可以在使用input()函数时搭配eval()函数,eval()函数的功能是将字符串的引号去掉,然后对引号中的表达式进行解析和计算。

以下是input()函数与eval()函数一起使用的代码:

python 复制代码
curname = input('你现有金额是多少:')
print('请输入:',curname,'兑换美元的汇率是:',end="")
rate = eval(input())
amount = eval(input("请输入你需要兑换的美元的数量:"))
print(amount * rate,curname,'可以兑换:',amount,'美元')

D:\pythonLED\python.exe E:/pythonProject/1.py
你现有金额是多少:100
请输入: 100 兑换美元的汇率是:7.28
请输入你需要兑换的美元的数量:10
72.8 100 可以兑换: 10 美元

Process finished with exit code 0

三、选择结构

3.1选择结构的用途

选择结构通过一个或多个条件的计算结果(True或False)选择性执行备选语句块。

选择结构可以分为单分支结构,双分支结构和多分支结构。

单分支结构:该结构中只有一个条件,功能是当条件成立时执行某行语句块,当条件不成立时直接跳过这个分支。
双分支结构:该结构中只有一个条件,功能是当条件成立时执行语句块1,不成立时执行语句块2。
多分支结构:该结构中有多个条件,每个条件对应一个语句块,其功能是根据给定的条件成立与否,从多个方案中选择某一个方案来执行。

单分支结构代码如下:

python 复制代码
s = eval(input("车辆速度为:"))
ls = eval(input("限制速度为:"))
if s > ls:
    print("车辆超速")

D:\pythonLED\python.exe E:/pythonProject/1.py
车辆速度为:50
限制速度为:60

Process finished with exit code 0
python 复制代码
s = eval(input("车辆速度为:"))
ls = eval(input("限制速度为:"))
if s > ls:
    print("车辆超速")

D:\pythonLED\python.exe E:/pythonProject/1.py
车辆速度为:80
限制速度为:50
车辆超速

Process finished with exit code 0

双分支结构代码如下:

python 复制代码
s = eval(input("车辆速度为:"))
ls = eval(input("限制速度为:"))
if s < ls:
    m = '正常通过'
else:
    m = '超速通过'
print("车辆",m)

D:\pythonLED\python.exe E:/pythonProject/1.py
车辆速度为:50
限制速度为:60
车辆 正常通过

Process finished with exit code 0
python 复制代码
s = eval(input("车辆速度为:"))
ls = eval(input("限制速度为:"))
if s < ls:
    m = '正常通过'
else:
    m = '超速通过'
print("车辆",m)

D:\pythonLED\python.exe E:/pythonProject/1.py
车辆速度为:80
限制速度为:60
车辆 超速通过

Process finished with exit code 0

多分支结构代码如下:

python 复制代码
s = int(input("车辆速度为:"))
ls = 50
r = (s-ls) /ls
if r < 0.1:
    m = '正常通过'
elif 0.1 < r < 0.2:
    m = '罚款40元'
elif 0.2 < r < 0.3:
    m = '罚款50元'
elif 0.3 < r < 0.4:
    m = '罚款60元'
elif 0.4 < r < 0.5:
    m = '罚款70元'
elif 0.5 < r < 0.6:
    m = '罚款80元'
else:
    m = '车辆扣留'
print("车辆",m)

D:\pythonLED\python.exe E:/pythonProject/1.py
车辆速度为:100
车辆 车辆扣留

Process finished with exit code 0
python 复制代码
s = int(input("车辆速度为:"))
ls = 50
r = (s-ls) /ls
if r < 0.1:
    m = '正常通过'
elif 0.1 < r < 0.2:
    m = '罚款40元'
elif 0.2 < r < 0.3:
    m = '罚款50元'
elif 0.3 < r < 0.4:
    m = '罚款60元'
elif 0.4 < r < 0.5:
    m = '罚款70元'
elif 0.5 < r < 0.6:
    m = '罚款80元'
else:
    m = '车辆扣留'
print("车辆",m)

D:\pythonLED\python.exe E:/pythonProject/1.py
车辆速度为:50
车辆 正常通过

Process finished with exit code 0
python 复制代码
s = int(input("车辆速度为:"))
ls = 50
r = (s-ls) /ls
if r < 0.1:
    m = '正常通过'
elif 0.1 < r < 0.2:
    m = '罚款40元'
elif 0.2 < r < 0.3:
    m = '罚款50元'
elif 0.3 < r < 0.4:
    m = '罚款60元'
elif 0.4 < r < 0.5:
    m = '罚款70元'
elif 0.5 < r < 0.6:
    m = '罚款80元'
else:
    m = '车辆扣留'
print("车辆",m)

四、循环结构

循环结构是控制程序运行的一类重要结构,与选择结构控制程序执行类似,它的作用是根据某个条件控制一段语句被重复执行的次数。

4.1循环结构的构造

4.1.1、循环结构的三个要素

循环结构可以划分为三个部分:

  • 一是重复执行的程序块或语句组,称为循环体。
  • 二是循环条件,用于控制程序流程是继续进入循环体还是退出循环体终止循环操作。
  • 三是循环体内的变量,这些变量的初值需要在循环开始前设定,这就是循环的初始化。

设计循环体:将需要被重复执行的语句放入循环体。
设置循环条件:采用"计数"或"设置条件"等方法,在这里控制循环的变量称为循环变量。
初始化:对循环中要使用的变量赋初值。

4.1.2、循环结构的一个要求

循环条件中通常有一个变量,这个变量的值一开始是符合条件要求的,但是当循环不断执行时,这个变量的值也在不断变化,最终这个变量的值将不再满足条件要求,这个时候循环结束。这个控制循环执行或结束的变量称为循环变量。为了防止进入无限循环,这里必须对循环变量有"一个要求":循环变量必须在循环体内变化,只有满足了这个要求,循环变量才能逐渐逼近循环条件的临界点,最终控制循环结束。

4.1.3、循环结构的一个关系

在循环体中可能出现另一些变化的量,我们的解决方法就是去找这些变化的量与循环变量之间的关系,这就是循环结构中的"一个关系"。也就是说,利用循环变量在循环过程中不断变化这个基础,找出变化的量与循环变量之间的演变关系,来确定变化的量。

4.2、循环语句

4.2.1、while语句

while语句是一种控制流语句,用于在给定条件为真时重复执行一段代码块。

基本语法

  • 结构:while语句的基本格式是while 判断条件: #执行语句。这里的判断条件是一个布尔表达式,当它评估为True时,循环体内的语句将被执行。
  • 循环体:执行语句可以是单个语句或语句块。如果循环体内只有一条语句,可以和while写在同一行,如果有多条语句,需要缩进形成代码块。

判断条件

  • 表达式:判断条件通常是比较运算符或逻辑运算符组成的表达式。只要这个表达式的值为True,循环就会继续执行。
  • 更新:通常在循环体内部会包含至少一个语句来修改判断条件中的变量,以避免造成无限循环。

流程控制

  • break和continue:在while循环中,可以使用break来立即退出循环,使用continue来跳过当前迭代的剩余部分并进入下一次循环。
  • else子句:在while循环后可以使用可选的else子句,当循环正常结束(而非由于break)时,会执行else块中的代码。

注意事项

  • 避免无限循环:确保循环有一个明确的退出条件,否则可能会造成程序挂起或过高的资源消耗。
  • 变量作用域:在循环内部定义的变量将影响循环的行为,应谨慎管理这些变量的作用域和值。
python 复制代码
s = 0
b = 1
while b < 10:
    s = s + b
    b += 1
    print("1+2+3+4+5+6+7+8+9=",s)

D:\pythonLED\python.exe E:/pythonProject/1.py
1+2+3+4+5+6+7+8+9= 1
1+2+3+4+5+6+7+8+9= 3
1+2+3+4+5+6+7+8+9= 6
1+2+3+4+5+6+7+8+9= 10
1+2+3+4+5+6+7+8+9= 15
1+2+3+4+5+6+7+8+9= 21
1+2+3+4+5+6+7+8+9= 28
1+2+3+4+5+6+7+8+9= 36
1+2+3+4+5+6+7+8+9= 45
python 复制代码
capital = 10000
interest = 0.008
t = 1
while capital <= 100000:
    capital = capital * (1 + interest)
    t += 1
print(t)

D:\pythonLED\python.exe E:/pythonProject/1.py
290
python 复制代码
while True:
    print("当前计数为:", count)
    count += 1

    if count == 5:
        print("计数达到5,跳过本次迭代")
        continue

    if count == 10:
        print("计数达到10,退出循环")
        break

D:\pythonLED\python.exe E:/pythonProject/1.py
当前计数为: 0
当前计数为: 1
当前计数为: 2
当前计数为: 3
当前计数为: 4
计数达到5,跳过本次迭代
当前计数为: 5
当前计数为: 6
当前计数为: 7
当前计数为: 8
当前计数为: 9
计数达到10,退出循环

4.3.1、for语句

for语句在Python编程中扮演着核心角色,特别是在处理集合数据时,其简洁的语法和强大的功能使得它成为最常用的控制流结构之一。

基本语法与结构:

  • for语句的基本语法格式是for 变量 in 序列: #执行的代码块。这里的"变量"会依次从"序列"中取值,每取一个值执行一次代码块中的语句。
  • 例如,使用for循环遍历一个包含五个元素的列表,可以按照for i in [0, 1, 2, 3, 4]: print(i)的形式编写代码。

遍历与操作:

  • 当序列为字符串时,for循环可以逐个字符地遍历字符串。例如,for char in "Hello": print(char)将会分别输出字符'H', 'e', 'l', 'l', 'o'。
  • 如果需要在遍历过程中获取元素的索引,可以使用内置函数enumerate()。例如,for index, value in enumerate(["a", "b", "c"]): print(index, value)会输出每个元素的索引和值。

range()与循环次数:

  • range()函数常与for循环一起使用,以指定循环的次数。例如,for i in range(5): print(i)将打印数字0到4,适用于需要在确定次数内重复执行代码的场景。
  • range()函数还支持设置起始值,结束值以及步长,例如range(1, 10, 2)生成一个从1开始到10(不含)结束的序列,步长为2。

嵌套循环与复杂控制:

  • for循环可以嵌套使用,以处理更复杂的任务。例如,打印一个乘法表可以利用两层for循环来实现:for i in range(1, 10): for j in range(1, i+1): print(f"{j}x{i}={j*i}", end=" ")。
  • 类似于while循环,for循环也可以使用break和continue语句来控制循环的流程。break用于完全退出循环,而continue用于跳过当前迭代。

错误与避免无限循环:

  • 在使用for循环时,应注意防止因逻辑错误导致的无限循环。尽管for循环由于其明确的迭代次数而较少遇到此类问题,但错误的循环终止条件仍然可能导致程序挂起。
python 复制代码
s = 0
for i in range(1,11):
    s = s + i
print("1+2+3+4+5+6+7+8+9=",s)

D:\pythonLED\python.exe E:/pythonProject/1.py
1+2+3+4+5+6+7+8+9= 55
python 复制代码
s = 0
i = 1
t = 1
while abs(t) >= 10 ** (-5):
    t = (1 / (2 * i - 1)) * (-1) ** (i + 1)
    s += t
    i = i + 1
pi = s * 4
print("pi=",pi)

D:\pythonLED\python.exe E:/pythonProject/1.py
pi= 3.141612653189785

五、程序异常处理

程序中的错误分为语法错误和逻辑错误,语法错误是程序中使用的语句格式存在错误,这些错误必须在程序执行前纠正,纠正程序的语法错误后,剩下的就是逻辑错误;产生逻辑错误的原因有很多种,可能是算法设计时考虑不周,或是输入不当;当python检测到一个错误时,python解释器就会中断程序允行,并在控制台给出错误信息,这种情况称为异常。

为了让程序在运行时具有更强的稳健性,不因异常中断运行,开发人员会在设计程序时加入一些异常处理语句,这种操作就称为异常处理。

5.1、python中常见的异常类型

TypeError

  • 描述:当操作或函数应用于不适当类型的对象时引发。例如,将字符串和整数进行加法运算会触发此异常。
  • 示例:a = 5 + '10'。这里尝试将一个整数和一个字符串相加,由于类型不匹配,Python会抛出TypeError。

ValueError

  • 描述:当函数或操作的参数具有正确的类型但是值不合法时引发。例如,尝试将非数字字符串转换为整数会触发此异常。
  • 示例:int('abc')。这里尝试将字符串'abc'转换为整数,由于'abc'无法被解析为有效的整数值,因此会抛出ValueError。

NameError

  • 描述:当尝试访问一个未定义的变量时,会抛出此异常。
  • 示例:print(x),其中x是未定义的变量,Python会因为找不到变量x的定义而抛出NameError。

IndexError

  • 描述:当尝试访问列表、元组或字符串中不存在的索引时引发。这通常发生在尝试访问超出序列范围的索引时。
  • 示例:a = [1, 2, 3]; print(a[3])。由于列表a只有三个元素,试图访问第四个元素(索引为3)时,将抛出IndexError。

KeyError

  • 描述:当尝试访问字典中不存在的键时引发。此异常用于处理字典中的键查找异常情况。
  • 示例:d = {'a': 1, 'b': 2}; print(d['c'])。在字典d中尝试访问键'c',由于该键不存在,因此会抛出KeyError。

ZeroDivisionError

  • 描述:当尝试除以零时引发。这是数学中的基本错误,任何数除以0都是未定义的。
  • 示例:a = 5 / 0。这里尝试将5除以0,由于除数不能为零,因此会引发ZeroDivisionError。
python 复制代码
try:
    num = eval(input("请输入一个整数:"))
    print(num + "a")
except NameError:
    print("输入错误,请输入一个整数:")
except:
    print("其他错误!")

D:\pythonLED\python.exe E:/pythonProject/1.py
请输入一个整数:ss
输入错误,请输入一个整数:
python 复制代码
try:
    num = eval(input("请输入一个整数:"))
    print(num + "a")
except NameError:
    print("输入错误,请输入一个整数:")
except:
    print("其他错误!")

D:\pythonLED\python.exe E:/pythonProject/1.py
请输入一个整数:5
其他错误!
python 复制代码
try:
    num = eval(input("请输入一个整数:"))
    print(num + "a")
except NameError:
    print("输入错误,请输入一个整数:")
except:
    print("其他错误!")
else:
    print("没有异常报错!")
finally:
    print("程序执行完毕!")

D:\pythonLED\python.exe E:/pythonProject/1.py
请输入一个整数:s
输入错误,请输入一个整数:
程序执行完毕!
python 复制代码
try:
    num = eval(input("请输入一个整数:"))
    print(num + "a")
except NameError:
    print("输入错误,请输入一个整数:")
except:
    print("其他错误!")
else:
    print("没有异常报错!")
finally:
    print("程序执行完毕!")

D:\pythonLED\python.exe E:/pythonProject/1.py
请输入一个整数:5
其他错误!
程序执行完毕!
相关推荐
SEEONTIME3 分钟前
python-24-一篇文章彻底掌握Python HTTP库Requests
开发语言·python·http·http库requests
Bearnaise4 分钟前
PointMamba: A Simple State Space Model for Point Cloud Analysis——点云论文阅读(10)
论文阅读·笔记·python·深度学习·机器学习·计算机视觉·3d
速盾cdn4 分钟前
速盾:vue的cdn是干嘛的?
服务器·前端·网络
shymoy9 分钟前
Radix Sorts
数据结构·算法·排序算法
风影小子17 分钟前
注册登录学生管理系统小项目
算法
黑龙江亿林等保20 分钟前
深入探索哈尔滨二级等保下的负载均衡SLB及其核心算法
运维·算法·负载均衡
lucy1530275107923 分钟前
【青牛科技】GC5931:工业风扇驱动芯片的卓越替代者
人工智能·科技·单片机·嵌入式硬件·算法·机器学习
哇咔咔哇咔35 分钟前
【科普】conda、virtualenv, venv分别是什么?它们之间有什么区别?
python·conda·virtualenv
四喜花露水37 分钟前
Vue 自定义icon组件封装SVG图标
前端·javascript·vue.js
杜杜的man38 分钟前
【go从零单排】迭代器(Iterators)
开发语言·算法·golang