python基礎之循環


一、while循環

如果條件成立(true),重復執行相同操作,條件不符合,跳出循環

  while   循環條件:

     循環操作

(1)while循環示例

例:輸入王曉明5門課程的考試成績,計算平均成績

1 i=1                                            # 初始化循環計數器i
2 sum=0                                          # 初始化總成績變量
3 while i<=5:                                    # 從i為1開始到5,重復執行一共5次接受考試成績、求和的操作
4         print ('請輸入第%d門課程的考試成績'%i)    # 提示用戶輸入成績,其中用到了格式化輸出,%d的取值隨i的值顯示,第1門課程,第2門課程……
5         sum=sum+input()                        # 把用戶輸入的成績賦值給sum,最后保存着5次成績的和
6         i=i+1                                  # 每次循環 i 都自增1,直到大於5跳出循環
7 avg=sum/(i-1)                                  # 當第五次執行完i=i+1時,i為6,跳出循環,計算出sum/(i-1)的值就是平均值,並賦值給avg
8 print ('王曉明5門課程的平均成績是%d'%avg)          # 格式化輸出avg的值,由於用了%d所以計算出的%avg的數值有小數也會省去,接收整數部分

(2)嵌套while循環示例

外部循環滿足條件后,執行代碼開始執行內部循環,等內部循環全部執行完畢,如果還滿足外部循環條件,則外部循環再次執行,依次類推,直到跳出外層循環。

例:分別輸入兩個學生的5門成績,並分別計算平均成績

 1 j=1                                         # 定義外部循環計數器初始值
 2 prompt='請輸入學生姓名'                       # 定義字符串變量,在用戶輸入時調用此變量可以減少敲漢字的麻煩
 3 while j<=2:                                 # 定義外部循環為執行兩次
 4     sum=0                                   # 定義成績初始值,之所以定義在這里,是為了當第二個學生輸入成績時可以讓sum初始化為0,重新接收新學生的成績和
 5     i=1                                     # 定義內部循環計數器初始值
 6     name = raw_input(prompt)               # 接收用戶輸入的學生姓名,賦值給name變量
 7     while i<=5:                             # 定義內部函數循環5次,就是接收5門課程的成績
 8         print ('請輸入第%d門的考試成績: '%i)   #提示用戶輸入成績,其中用到了格式化輸出,%d的取值隨i的值顯示,第1門課程,第2門課程……
 9         sum= sum + input()                  # 接收用戶輸入的成績,賦值給sum
10         i+=1                                # i變量自增1,i變為2,繼續執行循環,直到i等於6時,跳出循環
11     avg=sum/(i-1)                           # 計算第一個學生的平均成績 sum/(6-1),賦值給avg
12     print name,'的平均成績是%d\n'%avg         # 輸出學生成績平均值
13     j=j+1                                   # 內部循環執行完畢后,外部循環計數器j自增1,變為2,再進行外部循環
14 print '學生成績輸入完成!'                     # 外部循環結束,提示輸入完成!

 二、for循環

(1)使用for語句可以遍歷全部元素,例如逐個輸出字符串中的字符,逐個輸出列表中的元素,元組中的元素,集合中的元素(注意賦值時各元素的順序),字典中的鍵……

for letter in 'Python':
  print letter

結果:
P
y
t
h
o
n
fruits=['西瓜','水蜜桃','葡萄']
for fruit in fruits:
    print fruit

結果:
西瓜
水蜜桃
葡萄

(2)重復執行相同操作

使用range()函數創建一個數字列表

取值范圍:從起始數字開始到結束數字之前

1 for i in range(0,5):  #依次把0到4保存在變量i中
2     print 'Mr.Mangood最酷!'
3 
4 結果:
5 Mr.Mangood最酷!
6 Mr.Mangood最酷!
7 Mr.Mangood最酷!
8 Mr.Mangood最酷!
9 Mr.Mangood最酷!

輸入王曉明的三門考試成績,並算出平均值

 1 subjects=('linux系統','Mysql數據庫','Python語言')  # 定義一個元組,三個元素代表三門課程
 2 sum=0                                            # 定義變量num為初始化成績分數
 3 for i in subjects:                               # 把元組里的每一個元素依次賦值給i,一共有三次
 4     print '請輸入%s的考試成績'%i                   # 提示輸入成績,運用了格式化字符串功能,用i每次取得的元素名表達出成績名字,%s的意思是字符串
 5     score = input()                              # 接收用戶輸入的成績賦值給score
 6     sum += score                                 # 把成績賦給sum,相當於sum = sum + score
 7 avg= sum / len(subjects)                         # 跳出for循環后,計算平均值,這里用函數len()來計算變量subjects的長度,因為subjects定義為一個元組,因此長度即為元素個數3
 8 print '王曉明的平均成績為%d'%avg                    # 輸出平均成績
 9 
10 結果:
11 請輸入linux系統的考試成績
12 87
13 請輸入Mysql數據庫的考試成績
14 78
15 請輸入Python語言的考試成績
16 90
17 王曉明的平均成績為85

(3)嵌套for循環

輸入黃曉鳴、楊影2位同學,每人三門課程的考試成績,計算平均成績

 1 student = (23'黃曉鳴','楊影')                      #定義學生姓名的元組
 2 subjects=('linux系統','Mysql數據庫','Python語言')  #定義課程名字的元組
 3 for j in student:                                #把j依次取兩名學生的值進行兩次循環
 4     sum=0                                        #初始化成績的值
 5     print '%s同學的考試成績'%j                     #打印出標題
 6     for i in subjects:                           #定義課程循環
 7         print '請輸入%s的考試成績'%i               #提示輸入其中一名學生的考試成績
 8         score = input()                          #接收考試成績賦值給score
 9         if score<0 or score>100:                 #判斷分數取值范圍,做提醒
10             print '注意成績大小'    
11         sum+=score                               #每次輸入成績后,sum值都累加
12     avg= sum/len(subjects)                       #求出平均成績
13     print j,'的平均成績是%d\n'%avg                 #打印平均成績
14 print'完成學生成績錄入工作'                         #提示完成工作

 

三、循環控制

循環控制語句可以改變循環正常的執行順序

循環控制語句

break語句:跳出本次循環(嵌套循環中只跳出一層循環)

continue語句:跳過當前一輪循環體的剩余語句,重新測試循環狀態,進入下一輪循環,比如循環的次數一共有5次,第四次遇到continue了,那么不繼續執行了,直接進行第5次循環判斷

四、循環控制綜合案例

1、需求分析

顯示菜單

(N)ew User Login

(E)ntering User Login

(Q)uit

Enter choice:

注:輸入字母N,接收新的登錄名和密碼,保存在字典中

  輸入字母E,接收登錄名、密碼、查找、匹配用戶輸入是否正確

  輸入字母Q,退出

2、執行步驟

  (1)編制菜單

  (2)使用while語句實現菜單項選擇-外層循環

  (3)使用while語句接收新的登錄名-內層循環

  (4)使用if語句判斷菜單,執行相關操作

3、代碼架構圖

4、具體代碼

 1 db={}           
 2 prompt='''         
 3     (N)ew user login
 4     (E)ntering user login
 5     (Q)uit
 6 Enter choice:'''
 7 while True:         
 8     choice = raw_input(prompt).strip()[0].lower()       #讀取控制台輸入的字符串,去除其首尾多余的空格后,將第一個字符串轉換為小寫字母
 9     print '\n--You picked:[%s]'%choice      
10     if choice not in 'neq':
11         print '--invaild option:,try again--'
12     else:
13         if choice == 'n':
14             prompt1 = '--login desired:'
15             while True:
16                 name = raw_input(prompt1)
17                 if db.has_key(name):            #判斷字典里的鍵值是否已經有輸入的name值,如果有的話觸發continue重新執行while循環,因為觸發continue前prompt1被重新定義了,所以執行了新的name = raw_input(prompt1)
18                     prompt1 = '--name taken,try another: '
19                     continue
20                 else:
21                     break
22             pwd = raw_input('password:')    #驗證字典中的鍵沒有輸入的name值后,跳出循環,把用戶輸入的密碼賦值給pwd
23             db[name] = pwd      #把值傳給字典db中的name鍵實現字典數據的完善
24         elif choice == 'e':
25             name = raw_input("login:")
26             pwd = raw_input('password:')
27             password = db.get(name)     #登錄時,接收用戶輸入的登錄名和密碼后,把字典db中name鍵的值賦給password
28             if password == pwd:     #比較字典中的密碼password和用戶輸入的密碼pwd是否一致
29                 print 'welcome',name
30             else:
31                 print 'shibai'
32         else:
33             print 'quit!'
34             break
35         
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM