最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python的for和break循環(huán)結(jié)構(gòu)中使用else語句的技巧

 更新時(shí)間:2016年05月24日 18:21:12   作者:NerdSully  
平時(shí)我們把在if結(jié)構(gòu)中使用else語句當(dāng)作理所當(dāng)然,然而,Python強(qiáng)大的語法糖可以讓else語句在for和while循環(huán)中使用!下面我們就通過例子來看一下Python的for和break循環(huán)結(jié)構(gòu)中使用else語句的技巧

在Python中的while或者for循環(huán)之后還可以有else子句,作用是for循環(huán)中if條件一直不滿足,則最后就執(zhí)行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

但我們發(fā)現(xiàn)if條件在循環(huán)的過程中成立了,最終還是執(zhí)行了else語句里的內(nèi)容,這是為什么呢?

好的,我們這時(shí)看下面這段程序:

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里添加了一個(gè)break,這是因?yàn)閑lse是在for后執(zhí)行的,但只有for循環(huán)正常退出時(shí)才會(huì)執(zhí)行else語句(不是由break結(jié)束循環(huán))。而當(dāng)循環(huán)是由break語句中斷時(shí),else就不被執(zhí)行。

for/else等效于下面這段代碼,可以類似C語言那樣添加一個(gè)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塊在循環(huán)正常結(jié)束和循環(huán)條件不成立時(shí)執(zhí)行。

對于條件語句 if- else 我們已經(jīng)很熟悉了, 但是在Python中,for-else用于處理遍歷失敗。

比如我們要實(shí)現(xiàn)這樣一個(gè)功能:找出(81,99)中最大的完全平方數(shù)并輸出,找不到則輸出提示。

如果用c++的for循環(huán)實(shí)現(xiàn),必須手動(dòng)的判斷for循環(huán)是否遍歷失?。?/p>

#include <iostream> 
#include<math.h> 
using namespace std; 
int main() 
{ 
 int i; 
 float n; 
 for(i=99;i>81;i--) 
 { 
  n=sqrt((float)i); 
  if(n==int(n)) 
  { 
   cout<<i; 
   break; 
  } 
 } 
 if(i==81) //邊界判斷 
  cout<<"didn't find it!"<<endl; 
 return 0; 
} 

而用Python的for-else則可簡單的實(shí)現(xiàn)這一功能:

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循環(huán)完整完成后才執(zhí)行else;如果中途從break跳出,則連else一起跳出。

特別需要注意的是如果for中有if語句,else的縮進(jìn)一定要和for對齊,如果和if對齊,則變成if-else語句,會(huì)產(chǎn)生意想不到的錯(cuò)誤如下:

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節(jié)省兩行代碼同時(shí)便于閱讀,但是容易和if-else混淆。貌似實(shí)際中不會(huì)常用,反而更傾向于手動(dòng)處理。

相關(guān)文章

  • 詳解pandas使用drop_duplicates去除DataFrame重復(fù)項(xiàng)參數(shù)

    詳解pandas使用drop_duplicates去除DataFrame重復(fù)項(xiàng)參數(shù)

    這篇文章主要介紹了詳解pandas使用drop_duplicates去除DataFrame重復(fù)項(xiàng)參數(shù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • OpenCV立體圖像深度圖Depth Map基礎(chǔ)

    OpenCV立體圖像深度圖Depth Map基礎(chǔ)

    這篇文章主要為大家介紹了OpenCV立體圖像深度圖Depth Map基礎(chǔ)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • Python使用Gzip解壓的示例詳解

    Python使用Gzip解壓的示例詳解

    Python?中構(gòu)建了許多用于壓縮和解壓縮目的的庫,本文為大家介紹的Gzip庫就是一種流行的數(shù)據(jù)壓縮工具,下面我們就來看看如何使用?gzip?解壓縮來解壓縮壓縮內(nèi)容吧
    2023-11-11
  • Python matplotlib安裝和使用的完整教程

    Python matplotlib安裝和使用的完整教程

    Python Matplotlib是一個(gè)強(qiáng)大的數(shù)據(jù)可視化庫,它允許用戶創(chuàng)建各種類型的靜態(tài)、動(dòng)態(tài)圖表和圖形,Matplotlib基于NumPy和Pandas等科學(xué)計(jì)算庫,提供了豐富的繪圖選項(xiàng),本文介紹了Python matplotlib安裝和使用的完整教程,需要的朋友可以參考下
    2024-07-07
  • matplotlib圖形整合之多個(gè)子圖繪制的實(shí)例代碼

    matplotlib圖形整合之多個(gè)子圖繪制的實(shí)例代碼

    matplotlib繪制多個(gè)子圖的時(shí)候,我們可以根據(jù)自己的想法去排列子圖的順序,也可以生成不同的子圖數(shù)量,本文就詳細(xì)的介紹了matplotlib 多子圖繪制,具有一定的參考價(jià)值,感興趣的可以了解一下
    2022-04-04
  • Python property函數(shù)的具體使用

    Python property函數(shù)的具體使用

    property()函數(shù)是Python中用于創(chuàng)建可管理屬性的重要工具,它可以實(shí)現(xiàn)數(shù)據(jù)封裝、訪問控制、屬性計(jì)算等功能,本文就來介紹一下如何使用,感興趣的可以了解一下
    2024-02-02
  • Python for Informatics 第11章之正則表達(dá)式(二)

    Python for Informatics 第11章之正則表達(dá)式(二)

    這篇文章主要介紹了Python for Informatics 第11章 正則表達(dá)式(二)的相關(guān)資料,需要的朋友可以參考下
    2016-04-04
  • Python實(shí)現(xiàn)操作Redis所有類型的方法詳解

    Python實(shí)現(xiàn)操作Redis所有類型的方法詳解

    Redis作為一款高性能的NoSQL數(shù)據(jù)庫,越來越受到了廣大開發(fā)者的喜愛。本篇博客將介紹如何使用Python操作Redis的所有類型,以及一些高級用法,感興趣的可以了解一下
    2023-04-04
  • Python 多繼承中的一個(gè)詭異現(xiàn)象 既是 Father又是grandfather

    Python 多繼承中的一個(gè)詭異現(xiàn)象 既是 Father又是grandfather

    我們知道,在面向?qū)ο缶幊汤锩?,繼承是一個(gè)很重要的概念。子類可以使用父類的方法和屬性,接下來小編將用舉例的方式為大家講解Python 多繼承中的一個(gè)詭異現(xiàn)象 其即是爸爸又是爺爺?shù)钠孑猬F(xiàn)象,感興趣的小伙伴可以看下面文章具體了解
    2021-09-09
  • 通俗易懂了解Python裝飾器原理

    通俗易懂了解Python裝飾器原理

    這篇文章主要介紹了通俗易懂了解Python裝飾器原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09

最新評論

荔浦县| 达拉特旗| 石河子市| 建始县| 太原市| 乳山市| 彰化市| 巨野县| 阜新| 辽宁省| 灵山县| 迁西县| 东台市| 广昌县| 长寿区| 宕昌县| 南涧| 和政县| 梁平县| 呈贡县| 屏山县| 麻栗坡县| 河北区| 彰化市| 南充市| 桂东县| 台安县| 中宁县| 贵州省| 上饶市| 微博| 青铜峡市| 正安县| 图们市| 柏乡县| 浦县| 新巴尔虎左旗| 顺平县| 宜州市| 蓝田县| 莲花县|