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

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

 更新時間:2016年05月24日 18:21:12   作者:NerdSully  
平時我們把在if結構中使用else語句當作理所當然,然而,Python強大的語法糖可以讓else語句在for和while循環(huán)中使用!下面我們就通過例子來看一下Python的for和break循環(huán)結構中使用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)容,這是為什么呢?

好的,我們這時看下面這段程序:

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后執(zhí)行的,但只有for循環(huán)正常退出時才會執(zhí)行else語句(不是由break結束循環(huán))。而當循環(huán)是由break語句中斷時,else就不被執(zhí)行。

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塊在循環(huán)正常結束和循環(huán)條件不成立時執(zhí)行。

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

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

如果用c++的for循環(huán)實現(xiàn),必須手動的判斷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則可簡單的實現(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的縮進一定要和for對齊,如果和if對齊,則變成if-else語句,會產(chǎ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-else節(jié)省兩行代碼同時便于閱讀,但是容易和if-else混淆。貌似實際中不會常用,反而更傾向于手動處理。

相關文章

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

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

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

    OpenCV立體圖像深度圖Depth Map基礎

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

    Python使用Gzip解壓的示例詳解

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

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

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

    matplotlib圖形整合之多個子圖繪制的實例代碼

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

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

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

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

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

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

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

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

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

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

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

最新評論

乾安县| 巴马| 田林县| 昆明市| 宣汉县| 全椒县| 苗栗县| 广安市| 亚东县| 锡林浩特市| 禹州市| 成安县| 崇仁县| 独山县| 平谷区| 武夷山市| 武安市| 武强县| 长沙市| 万州区| 桓仁| 西吉县| 玛曲县| 黎平县| 安乡县| 多伦县| 赞皇县| 江安县| 台南市| 泾阳县| 苏尼特右旗| 上饶市| 磐安县| 唐山市| 新昌县| 金阳县| 项城市| 香港| 建水县| 枣庄市| 那曲县|