python是一門編程語言,做爲學習python的開始,須要事先搞明白:編程的目的是什麼?什麼是編程語言?什麼是編程?python
#計算機的發明,是爲了用機器取代/解放人力,而編程的目的則是將人類的思想流程按照某種可以被計算機識別的表達方式傳遞給計算機,從而達到讓計算機可以像人腦/電腦同樣自動執行的效果。
#上面說起的可以被計算機所識別的表達方式即編程語言,語言是溝通的介質,而編程語言是程序員與計算機溝通的介質。在編程的世界裏,計算機更像是人的奴隸,人類編程的目的就命令奴隸去工做。
#編程即程序員根據需求把本身的思想流程按照某種編程語言的語法風格編寫下來,產出的結果就是包含一堆字符的文件。 #強調:程序在未運行前跟普通文件無異,只有程序在運行時,文件內所寫的字符纔有特定的語法意義
egon老師說的話
Python是語言,而學習語言的套路都是同樣的,以英語學習爲例,你須要學單詞,而後學語法,最後寫做文。 英語的單詞---------->Python中的關鍵字 英語的語法---------->Python的語法 英語的做文---------->用Python語言寫的程序 此時你內心應該有數了,學Python其實很簡單,全都是在記憶一些固定的套路而已,那爲什麼有的人會以爲Python難呢?來看一個廣泛的問題,問題中包含答案。。。。。。 常常有學生問:老師,我上課都能聽得懂,爲啥我就是不會寫程序。 我:你這不廢話麼! 你學完了英語的單詞、語法、還有寫做文的方式,你能馬上寫出一篇優美的做文嗎?固然不能,那麼問題出在哪裏呢? 你想一想,你如今用漢語跟我溝通,腦子裏會不會分神去琢磨某個漢字的意思,漢語的語法應該怎樣?你固然不會,你腦子裏想到什麼,就會很天然地將它表達出來,由於你已經足夠熟練,漢語的文字、單詞、語法等已經深深地植入了你的意識裏。學英語,學Python都是同樣的道理,你覺得你會了,你可能確實會了,但你遠沒有達到爛熟於心的地步,所以你在寫程序的時候須要考慮的是關鍵字的用法、語法結構,而我則只須要考慮我腦子裏的邏輯如何安排,邏輯走通了程序天然就表達出來了,我徹底不會考慮關鍵字或語法什麼的,它就像是個人器官同樣,我不會在想吃飯的時候考慮應該用錠眼吃仍是用嘴吃,這就是你跟個人差異。 那有何好的解決方法呢?答:沒有。不下狠心翻來覆去練習,知識是沒法根植於你的潛意識的,你也永遠沒法本身寫程序,就跟當年郭靖學降龍十八掌同樣,洪七公要他打200下,他能打1000下,屌絲到不能再屌絲的你,沒有這點意志力,就別妄想鹹魚翻身了。。。。。。 附一句:我不知道成功有沒有捷徑,但我肯定學Python沒有,沒有幾萬行代碼的洗禮,你不可能成爲一名優秀的程序員,這就是我想對你說的。
編程的語言的發展linux
機器語言:站在計算機(奴隸)的角度,說計算機能聽懂的語言,那就是直接用二進制編程,直接操做硬件; 彙編語言:站在計算機(奴隸)的角度,簡寫的英文標識符取代二進制去編寫程序,本質仍然是直接操做硬件; 高級語言:站在人(奴隸主)的角度,說人話,即用人類的字符去編寫程序,屏蔽了硬件操做
高級語言更貼近人類語言,於是形成了:它必須被翻譯成計算機能讀懂二進制後,才能被執行,按照翻譯方式分爲
#1. 編譯型(須要編譯器,至關於用谷歌翻譯):如C,執行速度快,調試麻煩 #2. 解釋型(須要解釋器,至關於同聲傳譯):如python,執行速度慢,調試方便
總結:
機器語言 #優勢是最底層,執行速度最快 #缺點是最複雜,開發效率最低 彙編語言 #優勢是比較底層,執行速度最快 #缺點是複雜,開發效率最低 高級語言 #編譯型語言執行速度快,不依賴語言環境運行,跨平臺差 #解釋型跨平臺好,一份代碼,處處使用,缺點是執行速度慢,依賴解釋器運行
世界上的編程語言有600多種,但真正你們主流在使用的最多二三十種,不一樣的語言有本身的特色和擅長領域,隨着計算機的不斷髮展,新語言在不斷誕生,也同時有不少老舊的語言慢慢無人用了。有個權威的語言排名網站,能夠看到主流的編程語言是哪些程序員
#C語言:
C語言是一種計算機程序設計語言,它既具備高級語言的特色,又具備彙編語言的特色。它由美國貝爾研究所的D.M.Ritchie於1972年推出,1978年後,C語言已前後被移植到大、中、小及微型機上,它能夠做爲工做系統設計語言,編寫系統應用程序,也能夠做爲應用程序設計語言,編寫不依賴計算機硬件的應用程序。它的應用範圍普遍,具有很強的數據處理能力,不只僅是在軟件開發上,並且各種科研都須要用到C語言,適於編寫系統軟件,三維,二維圖形和動畫,具體應用好比單片機以及嵌入式系統開發。shell#C++:
C++是C語言的繼承的擴展,它既能夠進行C語言的過程化程序設計,又能夠進行以抽象數據類型爲特色的基於對象的程序設計,還能夠進行以繼承和多態爲特色的面向對象的程序設計。C++擅長面向對象程序設計的同時,還能夠進行基於過程的程序設計,於是C++就適應的問題規模而論,大小由之。
C++不只擁有計算機高效運行的實用性特徵,同時還致力於提升大規模程序的編程質量與程序設計語言的問題描述能力。編程#JAVA:
Java是一種能夠撰寫跨平臺應用軟件的面向對象的程序設計語言,是由Sun Microsystems公司於1995年5月推出的Java程序設計語言和Java平臺(即JavaSE, JavaEE, JavaME)的總稱。Java 技術具備卓越的通用性、高效性、平臺移植性和安全性,普遍應用於我的PC、數據中心、遊戲控制檯、科學超級計算機、移動電話和互聯網,同時擁有全球最大的開發者專業社羣。在全球雲計算和移動互聯網的產業環境下,Java更具有了顯著優點和廣闊前景。安全#PHP:
PHP(外文名:PHP: Hypertext Preprocessor,中文名:「超文本預處理器」)是一種通用開源腳本語言。語法吸取了C語言、Java和Perl的特色,利於學習,使用普遍,主要適用於Web開發領域
Ruby:
Ruby 是開源的,在Web 上免費提供,但須要一個許可證。[4]
Ruby 是一種通用的、解釋的編程語言。
Ruby 是一種真正的面向對象編程語言。
Ruby 是一種相似於 Python 和 Perl 的服務器端腳本語言。
Ruby 能夠用來編寫通用網關接口(CGI)腳本。
Ruby 能夠被嵌入到超文本標記語言(HTML)。
Ruby 語法簡單,這使得新的開發人員可以快速輕鬆地學習 Ruby服務器#GO:
Go 是一個開源的編程語言,它能讓構造簡單、可靠且高效的軟件變得容易。
Go是從2007年底由Robert Griesemer, Rob Pike, Ken Thompson主持開發,後來還加入了Ian Lance Taylor, Russ Cox等人,並最終於2009年11月開源,在2012年早些時候發佈了Go 1穩定版本。如今Go的開發已是徹底開放的,而且擁有一個活躍的社區。
由其擅長併發編程網絡#Python:
Python是一門優秀的綜合語言, Python的宗旨是簡明、優雅、強大,在人工智能、雲計算、金融分析、大數據開發、WEB開發、自動化運維、測試等方向應用普遍,已經是全球第4大最流行的語言。併發
python的創始人爲吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,Guido開始寫可以解釋Python語言語法的解釋器。Python這個名字,來自Guido所摯愛的電視劇Monty Python’s Flying Circus。他但願這個新的叫作Python的語言,能符合他的理想:創造一種C和shell之間,功能全面,易學易用,可拓展的語言。運維
最新的TIOBE排行榜,Python趕超PHP佔據第4, Python崇尚優美、清晰、簡單,是一個優秀並普遍使用的語言。
Python能夠應用於衆多領域,如:數據分析、組件集成、網絡服務、圖像處理、數值計算和科學計算等衆多領域。目前業內幾乎全部大中型互聯網企業都在使用Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等。
變量即變化的量,核心是「變」與「量」二字,變即變化,量即衡量狀態。
#程序執行的本質就是一系列狀態的變化,變是程序執行的直接體現,因此咱們須要有一種機制可以反映或者說是保存下來程序執行時狀態以及狀態的變化。 #好比: 英雄的等級爲1,打怪升級(變)爲10 殭屍的存活狀態True,被植物打死了,因而變爲False 人的名字爲egon,也能夠修改成Egon
#變量名(至關於門牌號,指向值所在的空間),等號,變量值 name='Egon' sex='male' age=18 level=10
#1. 變量名只能是 字母、數字或下劃線的任意組合 #2. 變量名的第一個字符不能是數字 #3. 關鍵字不能聲明爲變量名['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
#駝峯體 AgeOfOldboy = 56 NumberOfStudents = 80 #下劃線(推薦使用) age_of_oldboy = 56 number_of_students = 80
#1. 變量名爲中文、拼音 #2. 變量名過長 #3. 變量名詞不達意
#1 等號比較的是value #2 is比較的是id #強調: #1. id相同,意味着type和value一定相同 #2. value相同type確定相同,但id可能不一樣,以下 >>> x='Info Egon:18' >>> y='Info Egon:18' >>> id(x) 4376607152 >>> id(y) 4376607408 >>> >>> x == y True >>> x is y False
#一、在交互式模式下 Python實現int的時候有個小整數池。爲了不因建立相同的值而重複申請內存空間所帶來的效率問題, Python解釋器會在啓動時建立出小整數池,範圍是[-5,256],該範圍內的小整數對象是全局解釋器範圍內被重複使用,永遠不會被GC回收 每建立一個-5到256之間的整數,都是直接從這個池裏直接拿走一個值,例如 >>> y=4 >>> id(y) 4297641184 >>> >>> x=3 >>> x+=1 >>> id(x) 4297641184 #在pycharm中 但在pycharm中運行python程序,pycharm出於對性能的考慮,會擴大小整數池的範圍,其餘的字符串等不可變類型也都包含在內一便採用相同的方式處理了,咱們只須要記住這是一種優化機制,至於範圍到底多大,無需細究
變量的修改與內存管理(引用計數與垃圾回收機制)
常量即指不變的量,如pai 3.141592653..., 或在程序運行過程當中不會改變的量 舉例,假如老男孩老師的年齡會變,那這就是個變量,但在一些狀況下,他的年齡不會變了,那就是常量。在Python中沒有一個專門的語法表明常量,程序員約定俗成用變量名所有大寫表明常量 AGE_OF_OLDBOY = 56 #ps:在c語言中有專門的常量定義語法,const int count = 60;一旦定義爲常量,更改即會報錯
古時候,咱們去銀行取錢,須要有一個銀行業務員等着咱們把本身的帳號密碼輸入給他,而後他去進行驗證,成功後,咱們再將取款金額輸入/告訴他
驕傲的現代人,會爲客戶提供一臺ATM機(就是一臺計算機),讓ATM機跟用戶交互,從而取代人力。然而機器是死的,咱們必須爲其編寫程序來運行,這就要求咱們的編程語言中可以有一種能與用戶交互,接收用戶輸入數據的機制
#在python3中 input:用戶輸入任何值,都存成字符串類型 #在python2中 input:用戶輸入什麼類型,就存成什麼類型 raw_input:等於python3的input
註釋
隨着學習的深刻,用不了多久,你就能夠寫複雜的上千甚至上萬行的代碼啦,有些代碼你花了好久寫出來,過了些天再回去看,發現居然看不懂了,這太正常了。 另外,你之後在工做中會發現,一個項目可能是由幾個甚至幾十個開發人員一塊兒作,你要調用別人寫的代碼,別人也要用你的,若是代碼不加註釋,你本身都看不懂,更別說別人了,這產會捱打的。因此爲了不這種尷尬的事情發生,必定要增長你代碼的可讀性。
代碼註釋分單行和多行註釋, 單行註釋用#
,多行註釋能夠用三對雙引號""" """
代碼註釋的原則:
#1. 不用所有加註釋,只須要在本身以爲重要或很差理解的部分加註釋便可 #2. 註釋能夠用中文或英文,但不要用拼音
文件頭
#!/usr/bin/env python # -*- coding: utf-8 -*-
什麼是數據?爲什麼要有多種類型的數據?
#數據即變量的值,如age=18,18則是咱們保存的數據。
#變量的是用來反映/保持狀態以及狀態變化的,毫無疑問針對不一樣的狀態就應該用不一樣類型的數據去標識
#int整型 定義:age=10 #age=int(10) 用於標識:年齡,等級,身份證號,qq號,個數 #float浮點型 定義:salary=3.1 #salary=float(3.1) 用於標識:工資,身高,體重, #int(整型) 在32位機器上,整數的位數爲32位,取值範圍爲-2**31~2**31-1,即-2147483648~2147483647 在64位系統上,整數的位數爲64位,取值範圍爲-2**63~2**63-1,即-9223372036854775808~9223372036854775807 #long(長整型) 跟C語言不一樣,Python的長整數沒有指定位寬,即:Python沒有限制長整數數值的大小,但實際上因爲機器內存有限,咱們使用的長整數數值不可能無限大。 注意,自從Python2.2起,若是整數發生溢出,Python會自動將整數數據轉換爲長整數,因此現在在長整數數據後面不加字母L也不會致使嚴重後果了。 注意:在Python3裏再也不有long類型了,全都是int >>> a= 2**64 >>> type(a) #type()是查看數據類型的方法 <type 'long'> >>> b = 2**60 >>> type(b) <type 'int'> #complex複數型 >>> x=1-2j >>> x.imag -2.0 >>> x.real 1.0
#在python中,加了引號的字符就是字符串類型,python並無字符類型。 定義:name='egon' #name=str('egon') 用於標識:描述性的內容,如姓名,性別,國籍,種族
單引號,雙引號,三引號的區別
#那單引號、雙引號、多引號有什麼區別呢? 讓我大聲告訴你,單雙引號木有任何區別,只有下面這種狀況 你須要考慮單雙的配合 msg = "My name is Egon , I'm 18 years old!" #多引號什麼做用呢?做用就是多行字符串必須用多引號 msg = ''' 今天我想寫首小詩, 歌頌個人同桌, 你看他那烏黑的短髮, 好像一隻炸毛雞。 ''' print(msg)
字符串拼接(只能在字符串之間進行,且只能相加或相乘)
#數字能夠進行加減乘除等運算,字符串呢?讓我大聲告訴你,也能?what ?是的,但只能進行"相加"和"相乘"運算。 >>> name='egon' >>> age='18' >>> name+age #相加其實就是簡單拼接 'egon18' >>> name*5 'egonegonegonegonegon' #注意1:字符串相加的效率不高 字符串1+字符串3,並不會在字符串1的基礎上加字符串2,而是申請一個全新的內存空間存入字符串1和字符串3,至關字符串1與字符串3的空間被複制了一次, #注意2:只能字符串加字符串,不能字符串加其餘類型
#在[]內用逗號分隔,能夠存放n個任意類型的值 定義:students=['egon','alex','wupeiqi',] #students=list(['egon','alex','wupeiqi',]) 用於標識:存儲多個值的狀況,好比一我的有多個愛好 # 列表嵌套 #存放多個學生的信息:姓名,年齡,愛好 >>> students_info=[['egon',18,['play',]],['alex',18,['play','sleep']]] >>> students_info[0][2][0] #取出第一個學生的第一個愛好 'play'
#爲什麼還要用字典? 存放一我的的信息:姓名,性別,年齡,很明顯是多個值,既然是存多個值,咱們徹底能夠基於剛剛學習的列表去存放,以下 >>> info=['egon','male',18] 定義列表的目的不僅僅是爲了存,還要考慮取值,若是我想取出這我的的年齡,能夠用 >>> info[2] 但這是基於咱們已經知道在第3個位置存放的是年齡的前提下,咱們才知道索引2對應的是年齡 即: #name, sex, age info=['egon','male',18] 而這徹底只是一種假設,並無真正意義上規定第三個位置存放的是年齡,因而咱們須要尋求一種,便可以存放多個任意類型的值,又能夠硬性規定值的映射關係的類型,好比key=value,這就用到了字典 #在{}內用逗號分隔,能夠存放多個key:value的值,value能夠是任意類型 定義:info={'name':'egon','age':18,'sex':18} #info=dict({'name':'egon','age':18,'sex':18}) 用於標識:存儲多個值的狀況,每一個值都有惟一一個對應的key,能夠更爲方便高效地取值 # 字典的嵌套和取值 info={ 'name':'egon', 'hobbies':['play','sleep'], 'company_info':{ 'name':'Oldboy', 'type':'education', 'emp_num':40, } } print(info['company_info']['name']) #取公司名 students=[ {'name':'alex','age':38,'hobbies':['play','sleep']}, {'name':'egon','age':18,'hobbies':['read','sleep']}, {'name':'wupeiqi','age':58,'hobbies':['music','read','sleep']}, ] print(students[1]['hobbies'][1]) #取第二個學生的第二個愛好
做用:去重,關係運算,
定義:
知識點回顧
可變類型是不可hash類型
不可變類型是可hash類型
定義集合:
集合:能夠包含多個元素,用逗號分割,
集合的元素遵循三個原則:
1:每一個元素必須是不可變類型(可hash,可做爲字典的key)
2:沒有重複的元素
3:無序
注意集合的目的是將不一樣的值存放到一塊兒,不一樣的集合間用來作關係運算,無需糾結於集合中單個值
優先掌握的操做:
#一、長度len
#二、成員運算in和not in
#三、|合集
#四、&交集
#五、-差集
#六、^對稱差集
#七、==
#八、父集:>,>=
#九、子集:<,<=
練習:
一.關係運算 有以下兩個集合,pythons是報名python課程的學員名字集合,linuxs是報名linux課程的學員名字集合 pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'} linuxs={'wupeiqi','oldboy','gangdan'} 1. 求出即報名python又報名linux課程的學員名字集合 2. 求出全部報名的學生名字集合 3. 求出只報名python課程的學員名字 4. 求出沒有同時這兩門課程的學員名字集合
#布爾值,一個True一個False #計算機俗稱電腦,即咱們編寫程序讓計算機運行時,應該是讓計算機無限接近人腦,或者說人腦能幹什麼,計算機就應該能幹什麼,人腦的主要做用是數據運行與邏輯運算,此處的布爾類型就模擬人的邏輯運行,即判斷一個條件成立時,用True標識,不成立則用False標識 >>> a=3 >>> b=5 >>> >>> a > b #不成立就是False,即假 False >>> >>> a < b #成立就是True, 即真 True 接下來就能夠根據條件結果來幹不一樣的事情了: if a > b print(a is bigger than b ) else print(a is smaller than b ) 上面是僞代碼,但意味着, 計算機已經能夠像人腦同樣根據判斷結果不一樣,來執行不一樣的動做。 #全部數據類型都自帶布爾值 1、None,0,空(空字符串,空列表,空字典等)三種狀況下布爾值爲False 二、其他均爲真
#1.可變類型:在id不變的狀況下,value能夠變,則稱爲可變類型,如列表,字典 #2. 不可變類型:value一旦改變,id也改變,則稱爲不可變類型(id變,意味着建立了新的內存空間)
程序中常常會有這樣場景:要求用戶輸入信息,而後打印成固定的格式
好比要求用戶輸入用戶名和年齡,而後打印以下格式:
My name is xxx,my age is xxx.
很明顯,用逗號進行字符串拼接,只能把用戶輸入的名字和年齡放到末尾,沒法放到指定的xxx位置,並且數字也必須通過str(數字)的轉換才能與字符串進行拼接。
這就用到了佔位符,如:%s、%d
#%s字符串佔位符:能夠接收字符串,也可接收數字 print('My name is %s,my age is %s' %('egon',18)) #%d數字佔位符:只能接收數字 print('My name is %s,my age is %d' %('egon',18)) print('My name is %s,my age is %d' %('egon','18')) #報錯 #接收用戶輸入,打印成指定格式 name=input('your name: ') age=input('your age: ') #用戶輸入18,會存成字符串18,沒法傳給%d print('My name is %s,my age is %s' %(name,age)) #注意: #print('My name is %s,my age is %d' %(name,age)) #age爲字符串類型,沒法傳給%d,因此會報錯
小練習
練習:用戶輸入姓名、年齡、工做、愛好 ,而後打印成如下格式
------------ info of Egon ----------- Name : Egon Age : 22 Sex : male Job : Teacher ------------- end -----------------
計算機能夠進行的運算有不少種,可不僅加減乘除這麼簡單,運算按種類可分爲算數運算、比較運算、邏輯運算、賦值運算、成員運算、身份運算、位運算,今天咱們暫只學習算數運算、比較運算、邏輯運算、賦值運算
如下假設變量:a=10,b=20
如下假設變量:a=10,b=20
如下假設變量:a=10,b=20
#三者的優先級從高到低分別是:not,or,and >>> 3>4 and 4>3 or 1==3 and 'x' == 'x' or 3 >3 False #最好使用括號來區別優先級,其實意義與上面的同樣 >>> (3>4 and 4>3) or ((1==3 and 'x' == 'x') or 3 >3) False
#is比較的是id #而==比較的是值
既然咱們編程的目的是爲了控制計算機可以像人腦同樣工做,那麼人腦能作什麼,就須要程序中有相應的機制去模擬。人腦無非是數學運算和邏輯運算,對於數學運算在上一節咱們已經說過了。對於邏輯運算,即人根據外部條件的變化而作出不一樣的反映,好比
1 若是:女人的年齡>30歲,那麼:叫阿姨
age_of_girl=31
if age_of_girl > 30: print('阿姨好')
2 若是:女人的年齡>30歲,那麼:叫阿姨,不然:叫小姐
age_of_girl=18
if age_of_girl > 30: print('阿姨好') else: print('小姐好')
3 若是:女人的年齡>=18而且<22歲而且身高>170而且體重<100而且是漂亮的,那麼:表白,不然:叫阿姨
age_of_girl=18
height=171 weight=99 is_pretty=True if age_of_girl >= 18 and age_of_girl < 22 and height > 170 and weight < 100 and is_pretty == True: print('表白...')else: print('阿姨好')
#在表白的基礎上繼續: #若是表白成功,那麼:在一塊兒 #不然:打印。。。 age_of_girl=18 height=171 weight=99 is_pretty=True success=False if age_of_girl >= 18 and age_of_girl < 22 and height > 170 and weight < 100 and is_pretty == True: if success: print('表白成功,在一塊兒') else: print('什麼愛情不愛情的,愛nmlgb的愛情,愛nmlg啊...') else: print('阿姨好')
4 若是:成績>=90,那麼:優秀
若是成績>=80且<90,那麼:良好
若是成績>=70且<80,那麼:普通
其餘狀況:不好
score=input('>>: ') score=int(score) if score >= 90: print('優秀') elif score >= 80: print('良好') elif score >= 70: print('普通') else: print('不好')
格式:
if 條件1: 縮進的代碼塊 elif 條件2: 縮進的代碼塊 elif 條件3: 縮進的代碼塊 ...... else: 縮進的代碼塊
練習一
#!/usr/bin/env python name=input('請輸入用戶名字:') password=input('請輸入密碼:') if name == 'egon' and password == '123': print('egon login success') else: print('用戶名或密碼錯誤')
練習二
#!/usr/bin/env python #根據用戶輸入內容打印其權限 ''' egon --> 超級管理員 tom --> 普通管理員 jack,rain --> 業務主管 其餘 --> 普通用戶 ''' name=input('請輸入用戶名字:') if name == 'egon': print('超級管理員') elif name == 'tom': print('普通管理員') elif name == 'jack' or name == 'rain': print('業務主管') else: print('普通用戶')
練習三
# 若是:今天是Monday,那麼:上班 # 若是:今天是Tuesday,那麼:上班 # 若是:今天是Wednesday,那麼:上班 # 若是:今天是Thursday,那麼:上班 # 若是:今天是Friday,那麼:上班 # 若是:今天是Saturday,那麼:出去浪 # 若是:今天是Sunday,那麼:出去浪 #方式一: today=input('>>: ') if today == 'Monday': print('上班') elif today == 'Tuesday': print('上班') elif today == 'Wednesday': print('上班') elif today == 'Thursday': print('上班') elif today == 'Friday': print('上班') elif today == 'Saturday': print('出去浪') elif today == 'Sunday': print('出去浪') else: print('''必須輸入其中一種: Monday Tuesday Wednesday Thursday Friday Saturday Sunday ''') #方式二: today=input('>>: ') if today == 'Saturday' or today == 'Sunday': print('出去浪') elif today == 'Monday' or today == 'Tuesday' or today == 'Wednesday' \ or today == 'Thursday' or today == 'Friday': print('上班') else: print('''必須輸入其中一種: Monday Tuesday Wednesday Thursday Friday Saturday Sunday ''') #方式三: today=input('>>: ') if today in ['Saturday','Sunday']: print('出去浪') elif today in ['Monday','Tuesday','Wednesday','Thursday','Friday']: print('上班') else: print('''必須輸入其中一種: Monday Tuesday Wednesday Thursday Friday Saturday Sunday ''')
咱們已經學會用if .. else 來猜年齡的遊戲啦,可是隻能猜一次就中的機率過小了,若是我想給玩家3次機會呢?就是程序啓動後,玩家最多能夠試3次,這個怎麼弄呢?你總不會想着把代碼複製3次吧。。。。
那麼如何作到不用寫重複代碼又能讓程序重複一段代碼屢次呢? 循環語句就派上用場啦
條件循環:while,語法以下
while 條件: # 循環體 # 若是條件爲真,那麼循環體則執行,執行完畢後再次循環,從新判斷條件。。。 # 若是條件爲假,那麼循環體不執行,循環終止
#打印0-10 count=0 while count <= 10: print('loop',count) count+=1 #打印0-10之間的偶數 count=0 while count <= 10: if count%2 == 0: print('loop',count) count+=1 #打印0-10之間的奇數 count=0 while count <= 10: if count%2 == 1: print('loop',count) count+=1
死循環
import time num=0 while True: print('count',num) time.sleep(1) num+=1
循環嵌套與tag
tag=True
while tag: ...... while tag: ........ while tag: tag=False
#練習,要求以下: 1 循環驗證用戶輸入的用戶名與密碼 2 認證經過後,運行用戶重複執行命令 3 當用戶輸入命令爲quit時,則退出整個程序
#實現一: name='egon' password='123' while True: inp_name=input('用戶名: ') inp_pwd=input('密碼: ') if inp_name == name and inp_pwd == password: while True: cmd=input('>>: ') if not cmd:continue if cmd == 'quit': break print('run <%s>' %cmd) else: print('用戶名或密碼錯誤') continue break #實現二:使用tag name='egon' password='123' tag=True while tag: inp_name=input('用戶名: ') inp_pwd=input('密碼: ') if inp_name == name and inp_pwd == password: while tag: cmd=input('>>: ') if not cmd:continue if cmd == 'quit': tag=False continue print('run <%s>' %cmd) else: print('用戶名或密碼錯誤')
break與continue
#break用於退出本層循環 while True: print "123" break print "456" #continue用於退出本次循環,繼續下一次循環 while True: print "123" continue print "456"
while+else
#與其它語言else 通常只與if 搭配不一樣,在Python 中還有個while ...else 語句,while 後面的else 做用是指,當while 循環正常執行完,中間沒有被break 停止的話,就會執行else後面的語句 count = 0 while count <= 5 : count += 1 print("Loop",count) else: print("循環正常執行完啦") print("-----out of while loop ------") 輸出 Loop 1 Loop 2 Loop 3 Loop 4 Loop 5 Loop 6 循環正常執行完啦 -----out of while loop ------ #若是執行過程當中被break啦,就不會執行else的語句啦 count = 0 while count <= 5 : count += 1 if count == 3:break print("Loop",count) else: print("循環正常執行完啦") print("-----out of while loop ------") 輸出 Loop 1 Loop 2 -----out of while loop ------
while循環練習題
#1. 使用while循環輸出1 2 3 4 5 6 8 9 10
#2. 求1-100的全部數的和
#3. 輸出 1-100 內的全部奇數
#4. 輸出 1-100 內的全部偶數
#5. 求1-2+3-4+5 ... 99的全部數的和
#6. 用戶登錄(三次機會重試)
#7:猜年齡遊戲
要求:
容許用戶最多嘗試3次,3次都沒猜對的話,就直接退出,若是猜對了,打印恭喜信息並退出
#8:猜年齡遊戲升級版
要求:
容許用戶最多嘗試3次
每嘗試3次後,若是還沒猜對,就問用戶是否還想繼續玩,若是回答Y或y, 就繼續讓其猜3次,以此往復,若是回答N或n,就退出程序
如何猜對了,就直接退出
#題一 count=1 while count <= 10: if count == 7: count+=1 continue print(count) count+=1 count=1 while count <= 10: if count != 7: print(count) count+=1 #題目二 res=0 count=1 while count <= 100: res+=count count+=1 print(res) #題目三 count=1 while count <= 100: if count%2 != 0: print(count) count+=1 #題目四 count=1 while count <= 100: if count%2 == 0: print(count) count+=1 #題目五 res=0 count=1 while count <= 5: if count%2 == 0: res-=count else: res+=count count+=1 print(res) #題目六 count=0 while count < 3: name=input('請輸入用戶名:') password=input('請輸入密碼:') if name == 'egon' and password == '123': print('login success') break else: print('用戶名或者密碼錯誤') count+=1 #題目七 age_of_oldboy=73 count=0 while count < 3: guess=int(input('>>: ')) if guess == age_of_oldboy: print('you got it') break count+=1 #題目八 age_of_oldboy=73 count=0 while True: if count == 3: choice=input('繼續(Y/N?)>>: ') if choice == 'Y' or choice == 'y': count=0 else: break guess=int(input('>>: ')) if guess == age_of_oldboy: print('you got it') break count+=1
迭代式循環:for,語法以下
for i in range(10):
縮進的代碼塊
break與continue(同上)
循環嵌套
打印乘法表
for i in range(1,10): for j in range(1,i+1): print('%s*%s=%s' %(i,j,i*j),end=' ') print()
打印金字塔
#分析 ''' #max_level=5 * #current_level=1,空格數=4,*號數=1 *** #current_level=2,空格數=3,*號數=3 ***** #current_level=3,空格數=2,*號數=5 ******* #current_level=4,空格數=1,*號數=7 ********* #current_level=5,空格數=0,*號數=9 #數學表達式 空格數=max_level-current_level *號數=2*current_level-1 ''' #實現 max_level=5 for current_level in range(1,max_level+1): for i in range(max_level-current_level): print(' ',end='') #在一行中連續打印多個空格 for j in range(2*current_level-1): print('*',end='') #在一行中連續打印多個* print()
1、 簡述編譯型與解釋型語言的區別,且分別列出你知道的哪些語言屬於編譯型,哪些屬於解釋型
2、 執行 Python 腳本的兩種方式是什麼 3、 Pyhton 單行註釋和多行註釋分別用什麼? 4、 布爾值分別有什麼? 5、 聲明變量注意事項有那些? 6、 如何查看變量在內存中的地址? 7、 寫代碼 實現用戶輸入用戶名和密碼,當用戶名爲 seven 且 密碼爲 123 時,顯示登錄成功,不然登錄失敗! 實現用戶輸入用戶名和密碼,當用戶名爲 seven 且 密碼爲 123 時,顯示登錄成功,不然登錄失敗,失敗時容許重複輸入三次 實現用戶輸入用戶名和密碼,當用戶名爲 seven 或 alex 且 密碼爲 123 時,顯示登錄成功,不然登錄失敗,失敗時容許重複輸入三次 八、 寫代碼 a. 使用while循環實現輸出2-3+4-5+6...+100 的和 b. 使用 while 循環實現輸出 1,2,3,4,5, 7,8,9, 11,12 使用 while 循環實現輸出 1-100 內的全部奇數 e. 使用 while 循環實現輸出 1-100 內的全部偶數 九、 現有以下兩個變量,請簡述 n1 和 n2 是什麼關係? n1 = 123456 n2 = n1
十、
編寫登錄接口
基礎需求: