如何在 Python 循环中处理异常?


Python 中的循环技术将复杂的问题转化为简单的问题。它允许我们改变程序的流程,以便我们可以重复执行代码有限的次数,直到满足某个条件,而不是一遍又一遍地编写相同的代码。例如,如果我们需要显示前十个自然数,我们可以在一个最多运行十次迭代的循环中执行此操作,而不是使用十次 print 命令。

Python 提供三种在程序中循环代码块的方法:使用for循环、while循环和嵌套循环。

在本文中,让我们看看如何在这些循环中处理异常。

处理 While 循环中的异常

While 循环持续运行语句(代码),只要提供的条件为 TRUE。它在继续执行指令之前首先检查条件。

语法

while condition:
statements(code)

while 循环内部存在许多语句。条件可以是我们想要的任何内容。当条件失败(变为 false)时,循环终止,执行过程继续到下一行代码。

while 循环中的异常处理与通常的方法非常相似。包含可能发生异常的代码包含在一个 try 块中。

我们有以关键字“except”开头的语句。可以创建“自定义”异常:可以使用 raise 语句强制发生特定异常。

示例

假设我们希望向用户请求一个整数。这是通过使用 input() 方法实现的。但是,从该方法获得的输入的默认值是字符串;我们必须将其转换为整数。这是使用 (int) 进行类型转换完成的。

在这里,如果给定方法的输入不是有效的整数,我们将引发 ValueError。每当给出错误类型的输入时,while 循环将不断要求用户输入正确的值。一旦输入正确的值,循环就会退出。这在下面的示例中进行了演示:

# The loops keeps executing until the value entered is an integer
while True:
    try: 
        n = int(input("Please Enter an Integer: "))
        break
    except ValueError:
        print(" The Integer You entered is not valid! Please try again…")
print("You successfully entered an Integer!")

输出

从下面的输出中可以看到,while 循环会一直执行,直到输入正确的值。

Please Enter an Integer: g
The Integer You entered is not valid! Please try again…
Please Enter an Integer: h
The Integer You entered is not valid! Please try again…
Please Enter an Integer: 7
You successfully entered an Integer! 

处理 For 循环中的异常

在 Python 中,for 循环迭代遍历序列(列表、元组、字符串)或其他可迭代对象。遍历序列的过程称为遍历。

for val in sequence:
   loop body

在每次迭代中,val 是获取序列中项目值的变量。

循环会重复进行,直到到达序列中的最后一个项目。缩进用于将 for 循环的主体与代码的其余部分分开。

让我们检查一下我们是否可以访问超出数组长度的数组索引并处理随后的异常。

示例

在下面的示例中,我们使用 for 循环遍历包含月份名称的列表。如果这些月份的名称存在于列表中,则会打印这些月份的名称;一旦循环超过给定列表的长度,except 块就会执行,并相应地显示输出。

array = ["Jan", "Feb", "Mar", "Apr"]
for i in range(5):
    try:
        print("The element from the array present in index", i,"is", array[i])
    except:
        print ("Index out of range")

输出

上面程序的输出如下:

The element from the array present in index 0 is Jan
The element from the array present in index 1 is Feb
The element from the array present in index 2 is Mar
The element from the array present in index 3 is Apr
Index out of range

更新于:2023年2月22日

12K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.