哈嘍,大家好,我是了不起。
今天給大家?guī)?a href="http://qiaming.cn/tags/python/" target="_blank">python循環(huán)
一、while循環(huán)
如果條件成立(true),重復(fù)執(zhí)行相同操作,條件不符合,跳出循環(huán)
while 循環(huán)條件:
循環(huán)操作
(1)while循環(huán)示例
例:輸入王曉明5門課程的考試成績,計(jì)算平均成績
1 i=1                                            # 初始化循環(huán)計(jì)數(shù)器i
2 sum=0                                          # 初始化總成績變量
3 while i<=5:                                    # 從i為1開始到5,重復(fù)執(zhí)行一共5次接受考試成績、求和的操作
4         print ('請(qǐng)輸入第%d門課程的考試成績'%i)    # 提示用戶輸入成績,其中用到了格式化輸出,%d的取值隨i的值顯示,第1門課程,第2門課程……
5         sum=sum+input()                        # 把用戶輸入的成績賦值給sum,最后保存著5次成績的和
6         i=i+1                                  # 每次循環(huán) i 都自增1,直到大于5跳出循環(huán)
7 avg=sum/(i-1)                                  # 當(dāng)?shù)谖宕螆?zhí)行完i=i+1時(shí),i為6,跳出循環(huán),計(jì)算出sum/(i-1)的值就是平均值,并賦值給avg
8 print ('王曉明5門課程的平均成績是%d'%avg)          # 格式化輸出avg的值,由于用了%d所以計(jì)算出的%avg的數(shù)值有小數(shù)也會(huì)省去,接收整數(shù)部分
(2)嵌套while循環(huán)示例
外部循環(huán)滿足條件后,執(zhí)行代碼開始執(zhí)行內(nèi)部循環(huán),等內(nèi)部循環(huán)全部執(zhí)行完畢,如果還滿足外部循環(huán)條件,則外部循環(huán)再次執(zhí)行,依次類推,直到跳出外層循環(huán)。
例:分別輸入兩個(gè)學(xué)生的5門成績,并分別計(jì)算平均成績
1 j=1                                         # 定義外部循環(huán)計(jì)數(shù)器初始值
 2 prompt='請(qǐng)輸入學(xué)生姓名'                       # 定義字符串變量,在用戶輸入時(shí)調(diào)用此變量可以減少敲漢字的麻煩
 3 while j<=2:                                 # 定義外部循環(huán)為執(zhí)行兩次
 4     sum=0                                   # 定義成績初始值,之所以定義在這里,是為了當(dāng)?shù)诙€(gè)學(xué)生輸入成績時(shí)可以讓sum初始化為0,重新接收新學(xué)生的成績和
 5     i=1                                     # 定義內(nèi)部循環(huán)計(jì)數(shù)器初始值
 6     name = raw_input(prompt)               # 接收用戶輸入的學(xué)生姓名,賦值給name變量
 7     while i<=5:                             # 定義內(nèi)部函數(shù)循環(huán)5次,就是接收5門課程的成績
 8         print ('請(qǐng)輸入第%d門的考試成績: '%i)   #提示用戶輸入成績,其中用到了格式化輸出,%d的取值隨i的值顯示,第1門課程,第2門課程……
 9         sum= sum + input()                  # 接收用戶輸入的成績,賦值給sum
10         i+=1                                # i變量自增1,i變?yōu)?,繼續(xù)執(zhí)行循環(huán),直到i等于6時(shí),跳出循環(huán)
11     avg=sum/(i-1)                           # 計(jì)算第一個(gè)學(xué)生的平均成績 sum/(6-1),賦值給avg
12     print name,'的平均成績是%dn'%avg         # 輸出學(xué)生成績平均值
13     j=j+1                                   # 內(nèi)部循環(huán)執(zhí)行完畢后,外部循環(huán)計(jì)數(shù)器j自增1,變?yōu)?,再進(jìn)行外部循環(huán)
14 print '學(xué)生成績輸入完成!'                     # 外部循環(huán)結(jié)束,提示輸入完成!
二、for循環(huán)
(1)使用for語句可以遍歷全部元素,例如逐個(gè)輸出字符串中的字符,逐個(gè)輸出列表中的元素,元組中的元素,集合中的元素(注意賦值時(shí)各元素的順序),字典中的鍵……
for letter in 'Python':
  print letter
結(jié)果:
P
y
t
h
o
n
fruits=['西瓜','水蜜桃','葡萄']
for fruit in fruits:
    print fruit
結(jié)果:
西瓜
水蜜桃
葡萄
(2)重復(fù)執(zhí)行相同操作
使用range()函數(shù)創(chuàng)建一個(gè)數(shù)字列表
取值范圍:從起始數(shù)字開始到結(jié)束數(shù)字之前
1 for i in range(0,5):  #依次把0到4保存在變量i中
2     print 'Mr.Mangood最酷!'
3 
4 結(jié)果:
5 Mr.Mangood最酷!
6 Mr.Mangood最酷!
7 Mr.Mangood最酷!
8 Mr.Mangood最酷!
9 Mr.Mangood最酷!
輸入王曉明的三門考試成績,并算出平均值
1 subjects=('linux系統(tǒng)','Mysql數(shù)據(jù)庫','Python語言')  # 定義一個(gè)元組,三個(gè)元素代表三門課程
 2 sum=0                                            # 定義變量num為初始化成績分?jǐn)?shù)
 3 for i in subjects:                               # 把元組里的每一個(gè)元素依次賦值給i,一共有三次
 4     print '請(qǐng)輸入%s的考試成績'%i                   # 提示輸入成績,運(yùn)用了格式化字符串功能,用i每次取得的元素名表達(dá)出成績名字,%s的意思是字符串
 5     score = input()                              # 接收用戶輸入的成績賦值給score
 6     sum += score                                 # 把成績賦給sum,相當(dāng)于sum = sum + score
 7 avg= sum / len(subjects)                         # 跳出for循環(huán)后,計(jì)算平均值,這里用函數(shù)len()來計(jì)算變量subjects的長度,因?yàn)閟ubjects定義為一個(gè)元組,因此長度即為元素個(gè)數(shù)3
 8 print '王曉明的平均成績?yōu)?d'%avg                    # 輸出平均成績
 9 
10 結(jié)果:
11 請(qǐng)輸入linux系統(tǒng)的考試成績
12 87
13 請(qǐng)輸入Mysql數(shù)據(jù)庫的考試成績
14 78
15 請(qǐng)輸入Python語言的考試成績
16 90
17 王曉明的平均成績?yōu)?span id="ioju9zqacsz"    class="hljs-number">85
(3)嵌套for循環(huán)
輸入黃曉鳴、楊影2位同學(xué),每人三門課程的考試成績,計(jì)算平均成績
1 student = (23'黃曉鳴','楊影')                      #定義學(xué)生姓名的元組
 2 subjects=('linux系統(tǒng)','Mysql數(shù)據(jù)庫','Python語言')  #定義課程名字的元組
 3 for j in student:                                #把j依次取兩名學(xué)生的值進(jìn)行兩次循環(huán)
 4     sum=0                                        #初始化成績的值
 5     print '%s同學(xué)的考試成績'%j                     #打印出標(biāo)題
 6     for i in subjects:                           #定義課程循環(huán)
 7         print '請(qǐng)輸入%s的考試成績'%i               #提示輸入其中一名學(xué)生的考試成績
 8         score = input()                          #接收考試成績賦值給score
 9         if score< 0 or score >100:                 #判斷分?jǐn)?shù)取值范圍,做提醒
10             print '注意成績大小'    
11         sum+=score                               #每次輸入成績后,sum值都累加
12     avg= sum/len(subjects)                       #求出平均成績
13     print j,'的平均成績是%dn'%avg                 #打印平均成績
14 print'完成學(xué)生成績錄入工作'                         #提示完成工作
三、循環(huán)控制
循環(huán)控制語句可以改變循環(huán)正常的執(zhí)行順序
循環(huán)控制語句
break語句:跳出本次循環(huán)(嵌套循環(huán)中只跳出一層循環(huán))
continue語句:跳過當(dāng)前一輪循環(huán)體的剩余語句,重新測(cè)試循環(huán)狀態(tài),進(jìn)入下一輪循環(huán),比如循環(huán)的次數(shù)一共有5次,第四次遇到continue了,那么不繼續(xù)執(zhí)行了,直接進(jìn)行第5次循環(huán)判斷
四、循環(huán)控制綜合案例
1、需求分析
顯示菜單
(N)ew User Login
(E)ntering User Login
(Q)uit
Enter choice:
注:輸入字母N,接收新的登錄名和密碼,保存在字典中
輸入字母E,接收登錄名、密碼、查找、匹配用戶輸入是否正確
輸入字母Q,退出
2、執(zhí)行步驟
(1)編制菜單
(2)使用while語句實(shí)現(xiàn)菜單項(xiàng)選擇-外層循環(huán)
(3)使用while語句接收新的登錄名-內(nèi)層循環(huán)
(4)使用if語句判斷菜單,執(zhí)行相關(guān)操作
3、代碼架構(gòu)圖

 img
4、具體代碼
db={}
prompt='''
    (N)ew user login
    (E)ntering user login
    (Q)uit
Enter choice:'''
while True:
    choice = raw_input(prompt).strip()[0].lower()       #讀取控制臺(tái)輸入的字符串,去除其首尾多余的空格后,將第一個(gè)字符串轉(zhuǎn)換為小寫字母
    print 'n--You picked:[%s]'%choice
    if choice not in 'neq':
        print '--invaild option:,try again--'
    else:
        if choice == 'n':
            prompt1 = '--login desired:'
            while True:
                name = raw_input(prompt1)
                if db.has_key(name):            #判斷字典里的鍵值是否已經(jīng)有輸入的name值,如果有的話觸發(fā)continue重新執(zhí)行while循環(huán),因?yàn)橛|發(fā)continue前prompt1被重新定義了,所以執(zhí)行了新的name = raw_input(prompt1)
                    prompt1 = '--name taken,try another: '
                    continue
                else:
                    break
            pwd = raw_input('password:')    #驗(yàn)證字典中的鍵沒有輸入的name值后,跳出循環(huán),把用戶輸入的密碼賦值給pwd
            db[name] = pwd      #把值傳給字典db中的name鍵實(shí)現(xiàn)字典數(shù)據(jù)的完善
        elif choice == 'e':
            name = raw_input("login:")
            pwd = raw_input('password:')
            password = db.get(name)     #登錄時(shí),接收用戶輸入的登錄名和密碼后,把字典db中name鍵的值賦給password
            if password == pwd:     #比較字典中的密碼password和用戶輸入的密碼pwd是否一致
                print 'welcome',name
            else:
                print 'shibai'
        else:
            print 'quit!'
            break
好了,今天就介紹到這兒。
                        電子發(fā)燒友App
                    
                
                
          
        
        











           
            
            
                
            
評(píng)論