Python 中的else

在其他程序语言中,else 似乎只是与 if 关键字有缘分。而与其他的关键字没有联系,不能搭配使用,而在python中,else 除了与 if 匹配外, 还可以与for、while/ try等关键字匹配使用。

 

for

  只有当 for 循环进行完毕时,也就是说 for 循环中没有关键字 break 来终止循环,else 中的代码才能执行,在java 、C++等语言中,我们通常通过一个标示来判断循环有没有执行完,而在Python中,通过 else 代码块可以很简单的实现这个功能,如寻找一个字符串是否在列表中,java 写法如下:

复制代码
find = ‘Python’

array = ['Beijing', 'Shanghai', 'Wuhan']

found = False

for arr in array:
    
    if find == arr:
    
        print('Found')

        found = True

        break

if not found:

    print('Not Found!')
复制代码

 

而使用 else 块,则会使得代码更简洁,这里一定要注意,else 需要与 for关键字对齐:

复制代码
find = 'java'

array = ['I', 'LOVE', 'YOU']

for arr in array:
     
    if find == arr:
    
    print 'Found'

    break

elsle:  # else执行  表示没有break语句没有终止循环
    
    print('Not Found!!!')
复制代码

 

while 

  只有当while 循环运行完毕时, 也就是说 while 的循环条件为假而退出,没有关键字 break 来终止循环 while 循环,else 中的代码快才能够运行 这与 for 循环中 else 的用法类似的,如寻找一个字符串是否在一个列表中, java 写法如下:

复制代码
find = 'Python'

array = ['I', 'LOVE', 'yOU']

found = False

i = 0

while i < len(array):

    if find == array[i]:
        
        print('Found')

        found = True

        break

    i += 1

if not found:

    print('Not found!!!')
复制代码

 

而使用 else 块,则会使得diamante更简洁:

复制代码
find = 'java'

array = ['I', 'LOVE', 'YOU']

i = 0

while i < len(array):

     if find == array[i]:

        print('Found!')

        break

    i += 1

else:

    print('Not found!!')
复制代码

 

try 

只有当 try 快中的代码没有捕获到任何一种异常时,才执行 else 块中代码,其中的语法结构为:

复制代码
try:

    <Code1>

except:

    <Code2>

else;

    <Code3>
复制代码

当Code1代码执行的过程中捕获到 name 类型的异常时,就会执行 Code2 代码快。如果没有异常,会执行Code3代码块, 注意是没有异常,如果存在异而 except 模块没捕获到,那么 else 代码块中的代码不会执行,同时也要注意, else 代码块中的异常时没有捕获的,这可以应用在读取文件过程中,如果打开文件翊异常(可能有文件不存在等)就执行except中的代码块,若无异常,则执行 else 中的代码块,Python 代码如下:

复制代码
filename = ‘Python.txt’

try:

    file = open(filename, 'r')

except Exception as error:

    
    print('File Open Error', error)

else:

    for line in file:

            
        print(line)

    file.close()
复制代码

 

posted on   海纳百川_有容乃大  阅读(1146)  评论(0编辑  收藏  举报

编辑推荐:
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
阅读排行:
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· 赶AI大潮:在VSCode中使用DeepSeek及近百种模型的极简方法
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

导航

统计

点击右上角即可分享
微信分享提示