控制語句執行流程

1.1 用if選擇執行語句

1.1.1 if基礎

if語句的做用是選擇執行語句,其最簡單的形式以下:app

  if <條件>:
     <語句>

函數

if <條件>:
     <語句1>
  else:
     <語句2>

code

if <條件1>:
      <語句1>
  elif <條件 2>:
     <語句2>
  else:
       <語句3>

1.1.2 if語句的嵌套

if <條件>:
     if <條件>:          #此句開始的之後共4行都屬於第一個if條件的嵌套,注意及縮進量大小
          <語句1>
     elif <條件>:
         <語句2>
  else:
     <語句3>

   

1.2 用for循環執行語句

1.2.1 for基礎

for語句的形式以下:對象

  

for <循環變量> in <遍歷對象>:
     <語句1>
  else:
     <語句2>

for i in [1,2,3,4,5]:              #i是循環變量,每次循環,i會依次取得後面列表中一個值
     print (i,"的平方是:",i*i)      #此處理縮進的語句就是循環體
 else:                              #for循環正常結束時其後縮進的語句就會執行
     print ('循環結束!')

1.2.2 for語句與break語句、continue語句

1. break語句做用是中斷循環的執行,若是在for循環中執行了break語句,for語句的遍歷就會當即終止,即便還有未遍歷完的數據,仍是會當即終止for循環語句。
2. continue語句做用是提早中止循環體的執行,開始下一輪循環。在for語句中若是執行了continue語句,則continue語句後的循環體語句不會被執行,即提早結束了本次循環,而後進入下一個遍歷循環。排序

for i in [1,2,3,4,5]:
        print(i)
        if i == 2:               #當i等於2時,執行其後縮進的continue語句
         continue              #執行本語句後,其後的if語句和print()不會執行
        print (i,"的平方是:",i*i)
        if i == 4:               #當i等於4時,執行其後縮進的break語句
         break                 #執行break時,終止循環
else:                       #由於for循環中的break語句執行中斷了for循環
    print ('循環結束!')

adct = {'apple':15,'banana':20,'pear':35}
  for key, value in adct.items():     #同時遍歷鍵和值
     也可使用 元組  列表 字符串 的賦值遍歷
     print (key,':',value)

  for key in adct.keys():             #只遍歷鍵
     print(key)

  for value in adct.values():         #只遍歷值
     print (value)

1.2.3 for語句與range()函數

for語句中的對象集合能夠是列表、字典以及元組等,也能夠經過range()函數產生一個整數列表,以完成計數循環。range()函數的原型以下:ip

range( [start,] stop[, step])

其參數含義以下:內存

  • start 可選參數,起始數,默認值爲0;
  • stop 終止數,若是range只有一個參數x,那麼range生產一個從0至x-1的整數列表;
  • step 可選參數,步長,即每次循環序列增加值。
  • 產生的整數序列的最大值爲stop-l。字符串

    for i in range(0,7,2):
            print (i)

range()函數並非在調用時一次生成整個序列,而是遍歷一次才產生一個值,以減小內存的佔用,其本質是一個迭代器input

例題:計算並輸出由用戶指定的兩個整數之間全部素數原型

x = (int (input ("請輸入開始值(整數):")),int(input("請輸入一個結束值(整數):")))
                               #輸入兩個整數,並放入一個元組中
x1 = min (x)                   #獲取兩個整數中較小的一個整數
x2 = max(x)                     #獲取兩個整數中較大的一個整數
for n in range (x1, x2+1):     #用range()產生從x1至x2的序列
    for i in range(2,n):      #用range()產生從2至當前值n-1的序列
        if n % i == 0:           #若是餘數爲0則執行其後縮進的break語句,中斷內循環
            break
    else:                       #循環中斷,則代表至少有一個整數因子,不是素數,不輸出
            print (n,"是素數。")

1.2.4 for語句與內置迭代函數

內置迭代函數 使用說明
enumerate (seq ) 編號迭代在迭代時既返回序列中的元素,又返回該元素在序列中的編號(編號從0開始)。    
sorted (seq) 先遍歷序列中較小的值,後遍歷序列中較大的值,固然這要求序列中的數據能夠是排序的同類數據
reversed (seq) 翻轉迭代從尾至頭進行遍歷
zip (seql,seq2,...) 並行迭代同時遍歷函數中給出的seql、seq2等序列中同一序號的元素,並行迭代函數中序列值的長度不一致時,只遍歷到最短的序列的長度。
for i,item in enumerate('abcd'):
      print ('第%d個字符是:%s' % (i,item))

for i in sorted([3,1,6,0]):
      print(i)

lsta = (1,2)
lstb = (3,4)
lstc = (5, 6, 7)
for i,j,k in zip (lsta, lstb, lstc):
      print ('%d:%d:%d' % (i,j,k))

1.3 用while循環執行語句

1.3.1 while基礎

while語句的基本形式以下:

while <條件>:
      <語句1>
  else:
      <語句2>           #若是循環未被break終止,則執行

alst = [1,2,3,4,5]
total = len (alst)         #獲取列表中元素總數
i =0                       #初始化循環控制變量
while i < total:           #i從0至total-1
    print (i+1,"的平方是:",alst [i] *alst[i])
    i=i+1             #修改循環控制變量
else:
    print ('循環結束!')

1.3.2 增量賦值運算符

基本的運算符都有對應的增量賦值運算符:

+、-、*、/、//、**、%、&、|、^、>>、<<

基本寫法形如:

`x += 1`

1.4 推導或內涵(list comprehension)

列表、元組、字典等結構數據類型給使用大量數據帶來極大的方便,但可能你還須要對序列中的數據進行處理獲得另外一組數據序列,本節介紹從一個序列類型的數據集推導出另外一個序列類型的數據集。

1.4.1 推導基礎

在Python中是指以緊湊的方式對列表、元組、字典等序列或一系列的元素進行處理,處理結果仍然被放到一個列表、字典等序列之中的語法形式。

典型的列表推導基本形式以下: 

[<i 相關表達式> for i in aiterator]
  • aiterator是指一個可遍歷的對象,好比列表、元組,也能夠是range()函數。其語義爲:用循環變量i去遍歷aiterator,而且將i相關表達式的值放入一個列表中。

1.4.2 推導進階

列表推導式和字典推導式不只能夠對遍歷的元素進行所有處理,還可使用if語句實現有選擇地處理遍歷序列中的元素。其基本形式以下:

  

[<i 相關表達式> for i in aiterator if <條件>]
  {key_exp:value_exp for key_exp,value_exp in aiterator if<條件>}

若是要得到一個1~10中全部數的平方,且平方值爲偶數的一個列表,就可使用以下代碼來實現:

  

square_odd = [i**i for i in range (1, 11) if i**i %2 == 1]

對於字典推導式也可使用if來進行部分元素的處理。

若是在推導式中的求值表達式或條件表達式中應用函數,則能夠構造更加複雜的推導式來實現對序列中的數據進行批量的處理.

相關文章
相關標籤/搜索