1. 程式人生 > 實用技巧 >條件語句和迴圈語句

條件語句和迴圈語句

一、條件語句   1、概述:   2、語法格式:     if 條件1:     語句序列1     elif 條件2:     語句序列2     .......     elif條件K:     語句序列K     else:     語句序列K+1   if表示“如果”,elif表示“否則如果”,else表示“否則”。最簡單的條件語句只有if,elif和else都是可選項,根據需要決定是否使用。   3、pass     pass表示一個空操作,只起到一個佔位作用,執行時什麼都不做。 例如:   
1 score=eval(input('請輸入成績(0~100之間的整數):')
2 if
score>=60: 3 pass #什麼都不做 4 else: 5 print('不及格')
在某些必要的語句(如條件語句中的各語句序列)還沒有編寫的情況下,如果要執行程式,則可以先在這些必要語句處寫上“pass”,使得程式不存在語法錯誤、能夠正常執行。實際上,pass與條件語句並沒有直接關係,在程式中所有需要的地方都可以使用pass作為佔位符。比如,在後面將要學習的迴圈語句中,也可以使用pass作為佔位符。 二、迴圈語句   1、概述     通過迴圈,可以使得某些語句重複執行多次。     例如:我們要計算從1到n的和,可以使用一個變數sum=0儲存求和結果,並設定一個變數i、讓其遍歷1到n這n個整數;對於i的每一個取值,執行sum+=i的運算;遍歷結束後,sum中即儲存了求和結果。     提示:“遍歷”這個詞在計算機程式設計中經常會用到,其表示對某一個數據中的資料元素按照某種順序進行訪問,使得每個資料元素訪問且僅訪問一次   2、for迴圈   (1)用於遍歷可迭代物件中的每一個元素,並根據當前訪問的元素做資料處理,其語法格式為:     for 變數名 in 可迭代物件:     語句序列     例如:
1 d={'
Python':1,'C++':2,'Java':3} 2 for k in d: #注意for後要寫上“:” 3 print('%s:%d'%(k,d[k]))
   Python:1    C++:2    Java:3 注意:使用for遍歷字典中的元素時,每次獲取到的是元素的鍵,通過鍵可以再獲取到元素的值   (2)使用for迴圈時,如果需要遍歷一個數列中的所有數字,則通常利用range函式生成一個可迭代物件。range函式的語法格式如下:     range([beg, ]end[, step]),例如:
1 print(list(range(1,5,2))) #輸出“[1, 3]”
2 print(list(range(5,-1,-2))) #輸出“[5, 3, 1] ” 3 print(list(range(1,5))) #輸出“[1, 2, 3, 4] ” 4 print(list(range(5))) #輸出“[0, 1, 2, 3, 4] ”
提示:range函式返回的是一個可迭代物件,通過list函式可將該物件轉換為列表   (3)例題: 使用for迴圈實現1到n的求和。
1 n=eval(input('請輸入一個大於0的整數:'))
2 sum=0
3 for i in range(1,n+1): #range函式將生成由1到n這n個整陣列成的可迭代物件
4   sum+=i
5 print(sum) #輸出求和結果for迴圈
使用for迴圈實現1到n之間所有奇數的和。
1 n=eval(input('請輸入一個大於0的整數:'))
2 sum=0
3 for i in range(1,n+1,2): #步長2,因此會生成1、3、5、…等奇數
4   sum+=i
5 print(sum) #輸出求和結果
  3、while迴圈     語法格式:while 迴圈條件:           語句序列 例題:使用while迴圈實現1到n的求和。
1 n=eval(input('請輸入一個大於0的整數:'))
2 i,sum=1,0 #i和sum分別賦值為1和0
3 while i<=n: #當i<=n成立時則繼續迴圈,否則退出迴圈
4   sum+=i
5   i+=1 #注意該行也是while迴圈語句序列中的程式碼,與第4行程式碼應有相同縮排
6 print(sum) #輸出求和結果while迴圈
使用while迴圈實現1到n之間所有奇數的和。
1 n=eval(input('請輸入一個大於0的整數:'))
2 i,sum=1,0
3 while i<=n:
4   sum+=i
5   i+=2
6 print(sum) #輸出求和結果
  4、索引   (1)如果希望不僅獲取到每一個元素的值,而且能獲取到每一個元素的索引,則可以通過len函式獲取可迭代物件中的元素數量,再通過range函式生成由所有元素索引組成的可迭代物件。     同時訪問索引和元素值。
1 ls=['Python','C++','Java']
2 for k in range(len(ls)): #k為每一個元素的索引
3   print(k,ls[k]) #通過ls[k]可訪問索引為k的元素
輸出: 0 Python 1 C++ 2 Java   (2)也可以利用enumerate函式返回的索引序列物件同時獲得每個元素的索引和值
1 ls=['Python','C++','Java']
2 for k,v in enumerate(ls): #k儲存當前元素索引,v儲存當前元素值
3   print(k,v)

輸出:0 Python 1 C++ 2 Java

1 ls=['Python','C++','Java']
2 for k,v in enumerate(ls,1): #索引從1開始(預設為0)
3   print(k,v)
輸出:1 Python 2 C++ 3 Java   5、break、continue和else   (1)break用於跳出for迴圈或while迴圈。對於多重迴圈情況,跳出最近的那重迴圈。 例題:求1~100之間的素數。
1 for n in range(2,101): #n在2~100之間取值
2   m=int(n**0.5) #m等於根號n取整
3   i=2
4   while i<=m:
5     if n%i==0: #如果n能夠被i整除
6       break #跳出while迴圈
7     i+=1
8   if i>m: #如果i>m,則說明對於i從2到m上的取值、都不能整除n,所以n是素數
9     print(n,end=' ') #輸出n

輸出結果:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

  (2)continue用於結束本次迴圈並開始下一次迴圈。對於多重迴圈情況,作用於最近的那重迴圈。 例題: 3的倍數的整數求和。
1 sum=0
2 while True: #因為迴圈條件設定為True,所以無法通過條件不成立退出迴圈(永真迴圈)
3   n=eval(input('請輸入一個整數(輸入0結束程式):'))
4   if n==0: #如果輸入的整數是0,則通過break跳出迴圈
5     break
6   if n%3!=0: #如果n不是3的倍數,則不做求和運算
7     continue #通過continue結束本次迴圈、開始下一次迴圈,即轉到第2行程式碼
8   sum+=n #將n加到sum中
9 print('所有是3的倍數的整數之和為:%d'%sum)

執行程式時:依次輸入10、15、20、25、30、0,則最後輸出45(即15+30的結果)。

  (3)else在for迴圈和while迴圈後面可以跟著else分支,當for迴圈已經遍歷完列表中所有元素或while迴圈的條件為False時,就會執行else分支。 例題:素數判斷
1 n=eval(input('請輸入一個大於1的整數:'))
2 m=int(n**0.5) #m等於根號n取整
3 for i in range(2,m+1): #i在2至m之間取值
4     if n%i==0: #如果n能夠被i整除
5         break #跳出while迴圈
6 else: #注意這個else與第3行的for具有相同的縮排,所以它們是同一層次的語句
7     print('%d是素數'%n)else    
執行程式時: 如果輸入5,則會輸出“5是素數”; 如果輸入10,則不會輸出任何資訊。