在Python中的while或者for循环之后还可以有else子句,作用是for循环中if条件一直不满足,则最后就执行else语句。

for i in range(5):

if i == 1:

print 'in for'

else:

print 'in else'

print 'after for-loop'

# in for

# in else

# after for-loop

但我们发现if条件在循环的过程中成立了,最终还是执行了else语句里的内容,这是为什么呢?

好的,我们这时看下面这段程序:

for i in range(5):

if i == 1:

print 'in for'

break

else:

print 'in else'

print 'after for-loop'

# in for

# after for-loop

我们在if里添加了一个break,这是因为else是在for后执行的,但只有for循环正常退出时才会执行else语句(不是由break结束循环)。而当循环是由break语句中断时,else就不被执行。

for/else等效于下面这段代码,可以类似C语言那样添加一个flag:

found = False

for i in range(5):

if i == 1:

found = True

print 'in for'

if not found:

print 'not found'

print 'after for-loop'

# in for

# after for-loop

与for语句相似,while语句中的else子句用法是一样的,else块在循环正常结束和循环条件不成立时执行。

对于条件语句 if- else 我们已经很熟悉了, 但是在Python中,for-else用于处理遍历失败。

比如我们要实现这样一个功能:找出(81,99)中最大的完全平方数并输出,找不到则输出提示。

如果用c++的for循环实现,必须手动的判断for循环是否遍历失败:

#include

#include

using namespace std;

int main()

{

int i;

float n;

for(i=99;i>81;i--)

{

n=sqrt((float)i);

if(n==int(n))

{

cout<

break;

}

}

if(i==81) //边界判断

cout<<"didn't find it!"<

return 0;

}

而用Python的for-else则可简单的实现这一功能:

from math import sqrt

for n in range(99,81,-1):

root = sqrt(n)

if root == int(root):

print n

break

else:

print"Didn't find it!"

在for循环完整完成后才执行else;如果中途从break跳出,则连else一起跳出。

特别需要注意的是如果for中有if语句,else的缩进一定要和for对齐,如果和if对齐,则变成if-else语句,会产生意想不到的错误如下:

from math import sqrt

for n in range(99,81,-1):

root = sqrt(n)

if root == int(root):

print n

break

else:

print"Didn't find it!"

虽然使用for-else节省两行代码同时便于阅读,但是容易和if-else混淆。貌似实际中不会常用,反而更倾向于手动处理。

python中break可以用在for和if中吗_Python的for和break循环结构中使用else语句的技巧...相关推荐

  1. python if else break_Python的for和break循环结构中使用else语句的技巧

    在Python中的while或者for循环之后还可以有else子句,作用是for循环中if条件一直不满足,则最后就执行else语句. for i in range(5): if i == 1: pri ...

  2. c语言中编程中跳格的写法是,c语言中现代写法,用C语言编程中,一般的格式是怎样的?...

    C语言源程序的编程格式归纳如下: 1,强制性规则 1,一个C语言源程序必须有且只有一个MAIN函数. 2,函数名后必须紧跟圆括号对,函数体放在右圆括号")"后的花括号对" ...

  3. python中continue用法_Python学习笔记之Break和Continue用法分析

    本文实例讲述了Python学习笔记之Break和Continue用法.分享给大家供大家参考,具体如下: Python 中的Break 和 Continue break:控制何时循环应该结束 conti ...

  4. python代码基础题-python每日经典算法题5(基础题)+1(中难题)

    现在,越来越多的公司面试以及考验面试对算法要求都提高了一个层次,从现在,我讲每日抽出时间进行5+1算法题讲解,5是指基础题,1是指1道中等偏难.希望能够让大家熟练掌握python的语法结构已经一些高级 ...

  5. python中遍历字典判断是否存在_python中如何判断值在不在字典中

    python中判断值在不在字典中的方法:我们可以通过for循环来进行判断.在python中for循环可以遍历任何序列的项目.语法结构:[for iterating_var in sequence:st ...

  6. python逐行读取txt写入excel_用python从符合一定格式的txt文档中逐行读取数据并按一定规则写入excel(openpyxl支持Excel 2007 .xlsx格式)...

    前几天接到一个任务,从gerrit上通过ssh命令获取一些commit相关的数据到文本文档中,随后将这些数据存入Excel中.数据格式如下图所示 观察上图可知,存在文本文档中的数据符合一定的格式,通过 ...

  7. break后面的语句还执行吗_12.python之配合循环的四种语句

    上节课讲了配合循环语句使用的布尔值和布尔运算,为了能够更好地使用循环语句,本节课会讲述四种能够配合循环语句使用的语句,分别是break语句.continue语句.pass语句.else语句. 一.br ...

  8. python每日经典算法题5(基础题)+1(中难题)

    现在,越来越多的公司面试以及考验面试对算法要求都提高了一个层次,从现在,我讲每日抽出时间进行5+1算法题讲解,5是指基础题,1是指1道中等偏难.希望能够让大家熟练掌握python的语法结构已经一些高级 ...

  9. python的continue用法_Python学习笔记之Break和Continue用法分析

    本文实例讲述了Python学习笔记之Break和Continue用法.分享给大家供大家参考,具体如下: Python 中的Break 和 Continue break:控制何时循环应该结束 conti ...

最新文章

  1. 图1 ----节选CEC2015年中结果展示
  2. python手机版打了代码运行不了-如何用iPad运行Python代码?
  3. svm中支持向量的理解
  4. 七、股票中的布朗运动和pandas.dataframe.pct_change()
  5. 使用directX 7结合C#进行2D游戏编程
  6. 过年,你肯定会用到这款小程序!
  7. 疑似iPhone XI内部设计图曝光:这个造型爱不起来
  8. @property括号内属性讲解
  9. 国王游戏(贪心 + 高精度乘法 + 高精度除法 + 高精度比较大小)
  10. mysql数据库在工控自动化应用_robotframework自动化系列:操作mysql数据库
  11. 面向对象编程(五)——构造方法
  12. 打开计算机没显示硬盘分区,电脑新插了一个硬盘没显示怎么办
  13. python_业余学习_分词工具jieba 正则表达式清洗微博文本特殊符号 最大匹配算法
  14. 用telnet逛bbs
  15. 敏捷教练----敏捷项目管理-史诗、故事、主题
  16. android铃声代码,Android之来电铃声设置(示例代码)
  17. 系统架构设计师备考经验分享:边听课边画思维导图,高效学习
  18. java pdf转html插件pdf2htmlex
  19. Oracle--rename
  20. 【可信计算】第九次课:TPM密码资源管理

热门文章

  1. java.sql.SQLException: Column ‘class‘ not found.异常没有找到列
  2. spring boot 2.0 java8 下 foundError: javax/xml/bind/JAXBException 解决方法
  3. 解决linux 升级高版本python3.7后yum不能使用的问题
  4. webgl(three.js)实现室内定位,楼宇bim、实时定位三维可视化解决方案——第五课
  5. Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决
  6. 在Java中哪里可以获得“UTF-8”字符串文字?
  7. 如何一次关闭所有打开的标签?
  8. 如何显示jQuery中的加载微调器?
  9. 获取应用程序文件夹路径的最佳方法
  10. 如何禁用UITableView选择?