在本篇博客中,你將學習如何讓程序不斷地運行,讓用戶可以根據須要輸入信息,並在程序中使用這些信息。python
爲此,你須要使用wile循環讓程序不斷地運行,直到指定的條件不知足爲止。程序員
注意:在學習循環的路上,必定要學會剎車!app
在進入本篇博客學習以前,咱們須要解決一下上篇博客留下來的做業:編輯器
建立一個名爲cities的字典,其中將三個城市名用做鍵,對於每一個城市的所屬省份、人口數、是否爲省會等等建立一個字典做爲值。函數
而後以更爲直觀的形式打印出這些信息在輸出窗口。學習
cities = { "咸寧": { '省份': '湖北', '人口': 6158080, '省會': '武漢', }, "寧波": { '省份': '浙江', '人口': 11760024, '省會': '杭州', }, '寶雞': { '省份': '陝西', '人口': 1003285, '省會': '西安', } } for city, city_info in cities.items(): shenfen = city_info['省份'] renkou = city_info['人口'] shenghui = city_info['省會'] print("\n" + city+ " is in " + shenfen + ".") print(" 這座城市的人口有 " + str(renkou) + "人.") print(" 他所處省份的省會是"+shenghui+".")
輸出結果:測試
咸寧 is in 湖北.
這座城市的人口有 6158080人.
他所處省份的省會是武漢.
寧波 is in 浙江.
這座城市的人口有 11760024人.
他所處省份的省會是杭州.
寶雞 is in 陝西.
這座城市的人口有 1003285人.
他所處省份的省會是西安.ui
在學習while以前,咱們應該接觸過input的相關知識,爲了更好地學習後面的while循環,我將快速介紹一下input()的知識:spa
一.input()code
概念:函數input()讓程序暫停,等待用戶輸入一些文本。獲取用戶輸入後,Python將其存儲在一個變量中。
message=input("請告訴我,你想說什麼:") print(message)
輸出狀況(加粗的部分是鍵盤輸入的內容):
請告訴我,你想說什麼:我最帥
我最帥
使用函數input()編寫一個清晰的程序:
message=input("請告訴我,你想說什麼:") a="我聽到你說:\n"+message print(a)
輸出狀況(加粗的部分是鍵盤輸入的內容):
請告訴我,你想說什麼:你是豬
我聽到你說:
你是豬
若是提示過長的時候,應該怎麼處理?例:
message=input("尊敬的客戶你好,因爲本次服務通道出現異常,咱們不得不關閉本次系統,現只能轉人工服務,你願意留下你的電話嗎:")
能夠看到,提示用戶輸入的語句過長,這讓代碼不夠好看,在系統中也展示不直觀,因此採用的方法應該是:
將提示輸入的語句存儲到一個變量中,使用換行符號:
tips="尊敬的客戶你好,因爲本次服務通道出現異常,咱們不得不關閉本次系統," tips+="\n現只能轉人工服務,你願意留下你的電話嗎:" message=input(tips) print(message)
輸出結果(加粗的部分是鍵盤輸入的內容):
尊敬的客戶你好,因爲本次服務通道出現異常,咱們不得不關閉本次系統,
現只能轉人工服務,你願意留下你的電話嗎:123456789
123456789
處理輸入的數據學會使用int()轉換
在python3中,使用input()函數輸入的任何東西都是字符串類型,其中不乏數字,善用int()進行轉換:
math=input("請輸入一個數字讓系統計算它的平方數:") value=int(math)**2 print("轉換後的平方數爲:",value)
輸出結果(加粗的部分是鍵盤輸入的內容):
請輸入一個數字讓系統計算它的平方數:9
轉換後的平方數爲: 81
雖然咱們學習的是python3,但市場上不少項目仍是pyton2,咱們須要瞭解到關於python2的input(),有什麼不一樣:
在python2中,提示用戶輸入的應該使用raw_input(),都被轉爲字符串類型。
若是你直接輸入input()獲取用戶輸入,python2會解讀爲python代碼,因此每每會報錯。
二.while循環
(1).while的基礎
①不會剎車的司機不是好司機
在使用while循環的時候,新手程序員經常喜歡一寫完while就去運行,每每不可避免進入無限循環的可能,
致使終端在一直快速打印形成程序崩潰。
當你不幸陷入無限循環的時候,若不考慮損失,建議直接關閉編輯器,此方法最爲直接迅速。
也能夠按Ctrl+C終止,也能夠關掉顯示程序輸出的終端窗口。
因此在使用while的時候,必定要善於設置循環的條件,套上一個限制,完全對無限循環的可能斬草除根。
②讓用戶選擇什麼時候退出
如今來一段極爲簡單的循環示例:
num=0 while num<5: print(num) num+=1
輸出結果:
0
1
2
3
4
解釋:設置num的初始值0,而後在while門口,發現num的值<5,知足條件獲取進入資格,而後按照裏面的代碼辦事,出來時num已經變成了1,
這時候,while似乎有一種魔力,又像夢境的輪迴同樣,也沒有任何的東西阻止它,因而自行開啓了月光寶盒,
再次回到了while的門口,發現它依舊小於5,因而又進去了,反反覆覆地輪迴。
直到當它的值成了5,回到while的門口時,發現再也不知足進入的條件,這時候夢醒了。
在下面的博客中,再也不對while代碼進行解釋,請你們自行努力理解!
如今實現一個簡單的復讀機,當輸入退出復讀機時退出程序:
message=input("來試試復讀機吧!說出你想說的話:\n") while message != "退出復讀機": print(message) message=input("來試試復讀機吧!說出你想說的話:\n")
輸出結果(加粗的部分是鍵盤輸入的內容):
來試試復讀機吧!說出你想說的話:
我真帥
我真帥
來試試復讀機吧!說出你想說的話:
你真醜
你真醜
來試試復讀機吧!說出你想說的話:
我真沒
我真沒
來試試復讀機吧!說出你想說的話:
退出復讀機
③在循環中使用continue
在使用while循環的過程當中,有些被循環出來的條件是特殊條件,那麼此時你也想作特殊處理,
使用continue可以讓你實現特殊處理的過程,並再回到while,並不影響循環的進行。
實現一個簡單的while讓你更加了解continue:
num=0 while num<5: print(num) if num==3: print("3恰好是我最喜歡的數字!") continue num+=1
輸出結果:
0
1
2
3
3恰好是我最喜歡的數字!
3恰好是我最喜歡的數字!
3恰好是我最喜歡的數字!
無限循環!!!!!!
什麼?示例代碼都弄成無限循環了,那還教個P!
不着急,這是不少新手寫while代碼時百分之90都會遇到的誤區,並無完全理解continue的做用。
我在上面加粗了一段話,這段話很是重要:
當你執行continue的時候,要知道,它是直接回到了while,而直接無視了剩下的代碼,剛好剩下的代碼對循環極爲重要,
在上面的示例代碼中,對3進行continue處理後,它錯過了num+=1的代碼,直接回到了while,形成無限循環,一直停留在3。
正確的示例:
num=0 while num<5: print(num) if num==3: print("3恰好是我最喜歡的數字!") num+=1 continue num+=1
輸出結果:
0
1
2
3
3恰好是我最喜歡的數字!
4
但願你們經過一錯一對的代碼示範加深對continue的理解。
④使用break退出循環
有了上面的continue教學以後,再來理解break就不難了:
break也能夠說是特殊處理的手段,可是特殊處理以後,直接退出了while循環。
很少說,仍是同樣的示例來理解:
num=0 while num<5: print(num) if num==3: print("晦氣,這是我最討厭的數字,我走了!") num+=1 break num+=1
輸出結果:
0
1
2
3
晦氣,這是我最討厭的數字,我走了!
(2).while來處理列表和字典
①在列表之間移動元素
咱們知道,對於布爾表達式來講,空列表,空元組,空集合等空值,都是False。
若是一個列表list_1含有元素,它的布爾值是True,那麼while list_1是否是就是while True,
那麼,若是這個列表忽然變成了空列表,while list_1是否是變成了while False,循環就終止了?
從這個思路出發,咱們有下列代碼實現:
print("公司給出了一批遊戲測試名單,要求你所有測試一遍。") print("這些遊戲是穿越火線,QQ飛車,英雄聯盟,地下城與勇士,槍火遊俠。") game_list=['穿越火線','QQ飛車','英雄聯盟','地下城與勇士','槍火遊俠'] finish_list=[] while game_list: game=game_list.pop(0) print("如今你要測試的遊戲是:",game) state=input("你正在測試中……測試完畢時請按回車") print(game,"測試完畢,請進入下一個遊戲") game=game+"已測試完畢" finish_list.append(game) print(finish_list)
輸出結果:
公司給出了一批遊戲測試名單,要求你所有測試一遍。
這些遊戲是穿越火線,QQ飛車,英雄聯盟,地下城與勇士,槍火遊俠。
如今你要測試的遊戲是: 穿越火線
你正在測試中……測試完畢時請按回車
穿越火線 測試完畢,請進入下一個遊戲
如今你要測試的遊戲是: QQ飛車
你正在測試中……測試完畢時請按回車
QQ飛車 測試完畢,請進入下一個遊戲
如今你要測試的遊戲是: 英雄聯盟
你正在測試中……測試完畢時請按回車
英雄聯盟 測試完畢,請進入下一個遊戲
如今你要測試的遊戲是: 地下城與勇士
你正在測試中……測試完畢時請按回車
地下城與勇士 測試完畢,請進入下一個遊戲
如今你要測試的遊戲是: 槍火遊俠
你正在測試中……測試完畢時請按回車
槍火遊俠 測試完畢,請進入下一個遊戲
['穿越火線已測試完畢', 'QQ飛車已測試完畢', '英雄聯盟已測試完畢', '地下城與勇士已測試完畢', '槍火遊俠已測試完畢']
②使用用戶輸入來填充字典
本次示例代碼結合了上期博客所講到的知識點,可以起到複習鞏固的做用:
responses={} #設置一個標誌,指出調查是否繼續 polling_active=True while polling_active: #提示輸入被調查者的名字和回答 name=input("\n你的名字是什麼?") response=input("你最喜歡的遊戲是什麼?") #將答卷存儲在字典中 responses[name]=response #看看是否還能有人蔘與調查 repeat=input("你願意另外一我的來回答問題嗎?") if repeat =="no": polling_active=False #調查結束,顯示結果 print for name,response in responses.items(): print(name+"最喜歡的遊戲是:"+response+".")
輸出結果(加粗的部分是鍵盤輸入的內容):
你的名字是什麼?master
你最喜歡的遊戲是什麼?穿越火線
你願意另外一我的來回答問題嗎?yes
你的名字是什麼?paopao
你最喜歡的遊戲是什麼?QQ寵物
你願意另外一我的來回答問題嗎?no
master最喜歡的遊戲是:穿越火線.
paopao最喜歡的遊戲是:QQ寵物.
本篇博客的內容就到這,佈置的做業也很是簡單:
編寫一個三種沒完沒了的循環,並寫出形成循環的緣由,並學會終止無限循環的手段。
在日後的博客中,將會講到函數,類,對象等知識,當你看到這句話時,表明你有着決定入門python決心....
只是做者會在好久之後再更新了,由於我也要去學習,當我完全掌握函數和類等基礎知識的時候,我會再次歸來。
建議大家每過一段時間就複習以往全部博客,確保把這些基礎知識變成長期記憶。