Python的做者,Guido von Rossum,荷蘭人。1982年,Guido從阿姆斯特丹大學得到了數學和計算機碩士學位。然而,儘管他算得上是一位數學家,但他更加享受計算機帶來的樂趣。用他的話說,儘管擁有數學和計算機雙料資質,他總趨向於作計算機相關的工做,並熱衷於作任何和編程相關的活兒。python
在那個時候,Guido接觸並使用過諸如Pascal、C、Fortran等語言。這些語言的基本設計原則是讓機器能更快運行。在80年代,雖然IBM和蘋果已經掀起了我的電腦浪潮,但這些我的電腦的配置很低。好比早期的Macintosh,只有8MHz的CPU主頻和128KB的RAM,一個大的數組就能佔滿內存。全部的編譯器的核心是作優化,以便讓程序可以運行。爲了增進效率,語言也迫使程序員像計算機同樣思考,以便能寫出更符合機器口味的程序。在那個時代,程序員巴不得用手榨取計算機每一寸的能力。有人甚至認爲C語言的指針是在浪費內存。至於動態類型,內存自動管理,面向對象…… 別想了,那會讓你的電腦陷入癱瘓。linux
這種編程方式讓Guido感到苦惱。Guido知道如何用C語言寫出一個功能,但整個編寫過程須要耗費大量的時間,即便他已經準確的知道了如何實現。他的另外一個選擇是shell。Bourne Shell做爲UNIX系統的解釋器已經長期存在。UNIX的管理員們經常用shell去寫一些簡單的腳本,以進行一些系統維護的工做,好比按期備份、文件系統管理等等。shell能夠像膠水同樣,將UNIX下的許多功能鏈接在一塊兒。許多C語言下上百行的程序,在shell下只用幾行就能夠完成。然而,shell的本質是調用命令。它並非一個真正的語言。好比說,shell沒有數值型的數據類型,加法運算都很複雜。總之,shell不能全面的調動計算機的功能。程序員
Guido但願有一種語言,這種語言可以像C語言那樣,可以全面調用計算機的功能接口,又能夠像shell那樣,能夠輕鬆的編程。ABC語言讓Guido看到但願。ABC是由荷蘭的數學和計算機研究所開發的。Guido在該研究所工做,並參與到ABC語言的開發。ABC語言以教學爲目的。與當時的大部分語言不一樣,ABC語言的目標是「讓用戶感受更好」。ABC語言但願讓語言變得容易閱讀,容易使用,容易記憶,容易學習,並以此來激發人們學習編程的興趣。好比下面是一段來自Wikipedia的ABC程序,這個程序用於統計文本中出現的詞的總數:web
HOW TO RETURN words document: PUT {} IN collection FOR line IN document: FOR word IN split line: IF word not.in collection: INSERT word IN collection RETURN collection
HOW TO用於定義一個函數。一個Python程序員應該很容易理解這段程序。ABC語言使用冒號和縮進來表示程序塊。行 尾沒有分號。for和if結構中也沒有括號() 。賦值採用的是PUT,而不是更常見的等號。這些改動讓ABC程序讀起來像一段文字。 儘管已經具有了良好的可讀性和易用性,ABC語言最終沒有流行起來。在當時,ABC語言編譯器須要比較高配置的電腦才能運行。而這些電腦的使用者一般精通計算機,他們更多考慮程序的效率,而非它的學習難度。除了硬件上的困難外,ABC語言的設計也存在一些致命的問題: 可拓展性差。ABC語言不是模塊化語言。若是想在ABC語言中增長功能,好比對圖形化的支持,就必須改動不少地方。 不能直接進行IO。ABC語言不能直接操做文件系統。儘管你能夠經過諸如文本流的方式導入數據,但ABC沒法直接讀寫文 件。輸入輸出的困難對於計算機語言來講是致命的。你能想像一個打不開車門的跑車麼? 過分革新。ABC用天然語言的方式來表達程序的意義,好比上面程序中的HOW TO 。然而對於程序員來講,他們更習慣 用function或者define來定義一個函數。一樣,程序員更習慣用等號來分配變量。儘管ABC語言很特別,但學習難度 也很大。 傳播困難。ABC編譯器很大,必須被保存在磁帶上。當時Guido在訪問的時候,就必須有一個大磁帶來給別人安裝ABC編 譯器。 這樣,ABC語言就很難快速傳播。 1989年,爲了打發聖誕節假期,Guido開始寫Python語言的編譯器。Python這個名字,來自Guido所摯愛的電視劇Monty Python's Flying Circus。他但願這個新的叫作Python的語言,能符合他的理想:創造一種C和shell之間,功能全面,易學易用,可拓展的語言。Guido做爲一個語言設計愛好者,已經有過設計語言的嘗試。這一次,也不過是一次純粹的hacking行爲。正則表達式
1991年,第一個Python編譯器誕生。它是用C語言實現的,並可以調用C語言的庫文件。從一出生,Python已經具備了 :類,函數,異常處理,包含表和詞典在內的核心數據類型,以及模塊爲基礎的拓展系統。 Python語法不少來自C,但又受到ABC語言的強烈影響。來自ABC語言的一些規定直到今天還富有爭議,好比強制縮進。 但這些語法規定讓Python容易讀。另外一方面,Python聰明的選擇服從一些慣例,特別是C語言的慣例,好比迴歸等號賦值。Guido認爲,若是「常識」上確立的東西,沒有必要過分糾結。 Python從一開始就特別在乎可拓展性。Python能夠在多個層次上拓展。從高層上,你能夠直接引入. py文件。在底層,你能夠引用C語言的庫。Python程序員能夠快速的使用Python寫. py文件做爲拓展模塊。但當性能是考慮的重要因素時,Python程序員能夠深刻底層,寫C程序,編譯爲.so文件引入到Python中使用。Python就好像是使用鋼構建房同樣,先規定好大的框架。而程序員能夠在此框架下至關自由的拓展或更 改。 最初的Python徹底由Guido本人開發。Python獲得Guido同事的歡迎。他們迅速的反饋使用意見,並參與到Python的改進。Guido和一些同事構成Python的核心團隊。他們將本身大部分的業餘時間用於hack Python。隨後,Python拓 展到研究所以外。Python將許多機器層面上的細節隱藏,交給編譯器處理,並凸顯出邏輯層面的編程思考。Python程 序員能夠花更多的時間用於思考程序的邏輯,而不是具體的實現細節。這一特徵吸引了廣大的程序員。Python開始流行。算法
咱們不得不暫停咱們的Python時間,轉而看一看瞬息萬變的計算機行業。1990年代初,我的計算機開始進入普通家庭。Intel發佈了486處理器,windows發佈window 3.0開始的一系列視窗系統。計算機的性能大大提升。程序員開始關注計算機的易用性,好比圖形化界面。shell
因爲計算機性能的提升,軟件的世界也開始隨之改變。硬件足以知足許多我的電腦的須要。硬件廠商甚至渴望高需求軟 件的出現,以帶動硬件的更新換代。C++和Java相繼流行。C++和Java提供了面向對象的編程範式,以及豐富的對象庫。在犧牲了必定的性能的代價下,C++和Java大大提升了程序的產量。語言的易用性被提到一個新的高度。咱們還記得 ,ABC失敗的一個重要緣由是硬件的性能限制。從這方面說,Python要比ABC幸運許多。 另外一個悄然發生的改變是Internet。1990年代仍是我的電腦的時代,windows和Intel挾PC以令天下,盛極一時。儘管Internet爲主體的信息革命還沒有到來,但許多程序員以及資深計算機用戶已經在頻繁使用Internet進行交流,好比 使用email和newsgroup。Internet讓信息交流成本大大降低。一種新的軟件開發模式開始流行:開源。程序員利用 業餘時間進行軟件開發,並開放源代碼。1991年,Linus在comp.os.minix新聞組上發佈了Linux內核源代碼,吸引大批hacker的加入。Linux和GNU相互合做,最終構成了一個充滿活力的開源平臺。 硬件性能不是瓶頸,Python又容易使用,因此許多人開始轉向Python。Guido維護了一個maillist,Python用戶就經過郵件進行交流。Python用戶來自許多領域,有不一樣的背景,對Python也有不一樣的需求。Python至關的開放,又容 易拓展,因此當用戶不知足於現有功能,很容易對Python進行拓展或改造。隨後,這些用戶將改動發給Guido,並由Gu ido決定是否將新的特徵加入到Python或者標準庫中。若是代碼能被歸入Python自身或者標準庫,這將極大的榮譽。因爲Guido至高無上的決定權,他所以被稱爲「終身的仁慈獨裁者」。 Python被稱爲「Battery Included」,是說它以及其標準庫的功能強大。這些是整個社區的貢獻。Python的開發者來自不一樣領域,他們將不一樣領域的優勢帶給Python。好比Python標準庫中的正則表達是參考Perl,而lambda, map, filter, reduce等函數參考了Lisp。Python自己的一些功能以及大部分的標準庫來自於社區。Python的社 區不斷擴大,進而擁有了本身的newsgroup,網站,以及基金。從Python 2.0開始,Python也從maillist的開發方式,轉爲徹底開源的開發方式。社區氣氛已經造成,工做被整個社區分擔,Python也得到了更加高速的發展。 到今天,Python的框架已經確立。Python語言以對象爲核心組織代碼,支持多種編程範式,採用動態類型,自動進行內存回收。Python支持解釋運行,並能調用C庫進行拓展。Python有強大的標準庫。因爲標準庫的體系已經穩定,因此Python的生態系統開始拓展到第三方包。這些包,如Django、web.py、wxpython、numpy、matplotlib、PIL,將Python升級成了物種豐富的熱帶雨林。 數據庫
Python崇尚優美、清晰、簡單,是一個優秀並普遍使用的語言。Python在TIOBE排行榜中排行第八,它是Google的第三大開發語言,Dropbox的基礎語言,豆瓣的服務器語言。Python的發展史能夠做爲一個表明,帶給我許多啓示。 在Python的開發過程當中,社區起到了重要的做用。Guido自認爲本身不是全能型的程序員,因此他只負責制訂框架。若是問題太複雜,他會選擇繞過去,也就是cut the corner。這些問題最終由社區中的其餘人解決。社區中的人才是異常豐富的,就連建立網站,籌集基金這樣與開發稍遠的事情,也有人樂意於處理。現在的項目開發愈來愈複雜,愈來愈龐大,合做以及開放的心態成爲項目最終成功的關鍵。 Python從其餘語言中學到了不少,不管是已經進入歷史的ABC,仍是依然在使用的C和Perl,以及許多沒有列出的其餘 語言。能夠說,Python的成功表明了它全部借鑑的語言的成功。一樣,Ruby借鑑了Python,它的成功也表明了Python某些方面的成功。每一個語言都是混合體,都有它優秀的地方,但也有各類各樣的缺陷。同時,一個語言「好與很差」的評 判,每每受制於平臺、硬件、時代等等外部緣由。程序員經歷過許多語言之爭。其實,以開放的心態來接受各個語言,說不定哪一天,程序員也能夠如Guido那樣,混合出本身的語言。 編程
2017年1月份 編程語言流行排行榜 windows
易學————就如同你即將看到的同樣,Python極其容易上手。前面已經提到了,Python有極其簡單的語法。
免費、開源————Python是FLOSS(自由/開放源碼軟件)之一。簡單地說,你能夠自由地發佈這個軟件的拷貝、閱讀它的源代碼、對它作改動、把它的一部分用於新的自由軟件中。FLOSS是基於一個團體分享知識的概念。這是爲何Python如此優秀的緣由之一——它是由一羣但願看到一個更加優秀的Python的人創造並常常改進着的。
高層語言————當你用Python語言編寫程序的時候,你無需考慮諸如如何管理你的程序使用的內存一類的底層細節。
可移植性————因爲它的開源本質,Python已經被移植在許多平臺上(通過改動使它可以工做在不一樣平臺上)。若是你當心地避免使用依賴於系統的特性,那麼你的全部Python程序無需修改就能夠在下述任何平臺上面運行。這些平臺包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/二、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至還有PocketPC、Symbian以及Google基於linux開發的Android平臺!
解釋性————這一點須要一些解釋。一個用編譯性語言好比C或C++寫的程序能夠從源文件(即C或C++語言)轉換到一個你的計算機使用的語言(二進制代碼,即0和1)。這個過程經過編譯器和不一樣的標記、選項完成。當你運行你的程序的時候,鏈接/轉載器軟件把你的程序從硬盤複製到內存中而且運行。而Python語言寫的程序不須要編譯成二進制代碼。你能夠直接從源代碼運行程序。在計算機內部,Python解釋器把源代碼轉換成稱爲字節碼的中間形式,而後再把它翻譯成計算機使用的機器語言並運行。事實上,因爲你再也不須要擔憂如何編譯程序,如何確保鏈接轉載正確的庫等等,全部這一切使得使用Python更加簡單。因爲你只須要把你的Python程序拷貝到另一臺計算機上,它就能夠工做了,這也使得你的Python程序更加易於移植。
面向對象————Python既支持面向過程的編程也支持面向對象的編程。在「面向過程」的語言中,程序是由過程或僅僅是可重用代碼的函數構建起來的。在「面向對象」的語言中,程序是由數據和功能組合而成的對象構建起來的。與其餘主要的語言如C++和Java相比,Python以一種很是強大又簡單的方式實現面向對象編程。
可擴展性————若是你須要你的一段關鍵代碼運行得更快或者但願某些算法不公開,你能夠把你的部分程序用C或C++編寫,而後在你的Python程序中使用它們。
豐富的庫————Python標準庫確實很龐大。它能夠幫助你處理各類工做,包括正則表達式、文檔生成、單元測試、線程、數據庫、網頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統、GUI(圖形用戶界面)、Tk和其餘與系統有關的操做。記住,只要安裝了Python,全部這些功能都是可用的。這被稱做Python的「功能齊全」理念。除了標準庫之外,還有許多其餘高質量的庫,如wxPython、Twisted和Python圖像庫等等。
規範的代碼————Python採用強制縮進的方式使得代碼具備極佳的可讀性。
Python常常被用於Web開發。好比,經過mod_wsgi模塊,Apache能夠運行用Python編寫的Web程序。Python定義了WSGI標準應用接口來協調Http服務器與基於Python的Web程序之間的通訊。一些Web框架,如Django,TurboGears,web2py,Zope等,可讓程序員輕鬆地開發和管理複雜的Web程序。
在不少操做系統裏,Python是標準的系統組件。 大多數Linux發行版以及NetBSD、OpenBSD和Mac OS X都集成了Python,能夠在終端下直接運行Python。有一些Linux發行版的安裝器使用Python語言編寫,好比Ubuntu的Ubiquity安裝器,Red Hat Linux和Fedora的Anaconda安裝器。Gentoo Linux使用Python來編寫它的Portage包管理系統。Python標準庫包含了多個調用操做系統功能的庫。經過pywin32這個第三方軟件包,Python可以訪問Windows的COM服務及其它Windows API。使用IronPython,Python程序可以直接調用.Net Framework。通常說來,Python編寫的系統管理腳本在可讀性、性能、代碼重用度、擴展性幾方面都優於普通的shell腳本。
NumPy,SciPy,Matplotlib可讓Python程序員編寫科學計算程序。
PyQt、PySide、wxPython、PyGTK是Python快速開發桌面應用程序的利器。
Python對於各類網絡協議的支持很完善,所以常常被用於編寫服務器軟件、網絡爬蟲。第三方庫Twisted支持異步網絡編程和多數標準的網絡協議(包含客戶端和服務器),而且提供了多種工具,被普遍用於編寫高性能的服務器軟件。
不少遊戲使用C++編寫圖形顯示等高性能模塊,而使用Python或者Lua編寫遊戲的邏輯、服務器。相較於Python,Lua的功能更簡單、體積更小;而Python則支持更多的特性和數據類型。
構思實現,產品早期原型和迭代
YouTube、Google、Yahoo!、NASA都在內部大量地使用Python。
<1>編寫python程序方法1
打開「超級終端」
2.輸入python3
,輸入python3表示用的python這門編程語言的第3個版本,若是隻輸入python的話表示用的是python的第2個版本
3.輸入如下代碼
print('hello world')
打開編輯軟件sublime
以#開頭,#右邊的全部東西當作說明,而不是真正要執行的程序,起輔助說明做用
# 我是註釋,能夠在裏寫一些功能說明之類的哦 print('hello world')
'''我是多行註釋,能夠寫不少不少行的功能說明 這就是我牛X指出 哈哈哈。。。 ''' ''' 下面的代碼完成 ,打印一首詩 名字叫作:春江花月夜 做者,忘了 ''' print('╔═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╗') print('║ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ║') print('║ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ║') print('║ │春│灩│江│空│江│江│人│不│白│誰│可│玉│此│鴻│昨│江│斜│不│ ║') print('║ │江│灩│流│裏│天│畔│生│知│雲│家│憐│戶│時│雁│夜│水│月│知│ ║') print('║ │潮│隨│宛│流│一│何│代│江│一│今│樓│簾│相│長│閒│流│沉│乘│ ║') print('║ │水│波│轉│霜│色│人│代│月│片│夜│上│中│望│飛│潭│春│沉│月│ ║') print('║ │連│千│繞│不│無│初│無│待│去│扁│月│卷│不│光│夢│去│藏│幾│ ║') print('║春│海│萬│芳│覺│纖│見│窮│何│悠│舟│徘│不│相│不│落│欲│海│人│ ║') print('║江│平│裏│甸│飛│塵│月│已│人│悠│子│徊│去│聞│度│花│盡│霧│歸│ ║') print('║花│,│,│,│,│,│,│,│,│,│,│,│,│,│,│,│,│,│,│ ║') print('║月│海│何│月│汀│皎│江│江│但│青│何│應│搗│願│魚│可│江│碣│落│ ║') print('║夜│上│處│照│上│皎│月│月│見│楓│處│照│衣│逐│龍│憐│潭│石│月│ ║') print('║ │明│春│花│白│空│何│年│長│浦│相│離│砧│月│潛│春│落│瀟│搖│ ║') print('║ │月│江│林│沙│中│年│年│江│上│思│人│上│華│躍│半│月│湘│情│ ║') print('║ │共│無│皆│看│孤│初│望│送│不│明│妝│拂│流│水│不│復│無│滿│ ║') print('║ │潮│月│似│不│月│照│相│流│勝│月│鏡│還│照│成│還│西│限│江│ ║') print('║ │生│明│霰│見│輪│人│似│水│愁│樓│臺│來│君│文│家│斜│路│樹│ ║') print('║ │。│。│。│。│。│?│。│。│。│?│。│。│。│。│。│。│。│。│ ║') print('║ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ║') print('║ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ║') print('╚═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╝')
若是直接在程序中用到了中文,好比
print('你好')
若是直接運行輸出,程序會出錯:
解決的辦法爲:在程序的開頭寫入以下代碼,這就是中文註釋
#coding=utf-8
修改以後的程序:
#coding=utf-8 print('你好')
運行結果:
你好
在python的語法規範中推薦使用的方式:
# -*- coding:utf-8 -*-
在程序中,有時咱們須要對2個數據進行求和,那麼該怎樣作呢?
你們類比一下現實生活中,好比去超市買東西,每每我們須要一個菜籃子,用來進行存儲物品,等到全部的物品都購買完成後,在收銀臺進行結帳便可
若是在程序中,須要把2個數據,或者多個數據進行求和的話,那麼就須要把這些數據先存儲起來,而後把它們累加起來便可
在Python中,存儲一個數據,須要一個叫作變量
的東西,以下示例:
num1 = 100 #num1就是一個變量,就好一個小菜籃子 num2 = 87 #num2也是一個變量 result = num1 + num2 #把num1和num2這兩個"菜籃子"中的數據進行累加,而後放到 result變量中
說明:
菜籃子
,若是須要存儲多個數據,最簡單的方式是有多個變量,固然了也可使用一個程序中:
爲了更充分的利用內存空間以及更有效率的管理內存,變量是有不一樣的類型的,以下所示:
怎樣知道一個變量的類型呢?
可使用type(變量的名字),來查看變量的類型
<1>標示符
開發人員在程序中自定義的一些符號和名稱
標示符是本身定義的,如變量名 、函數名等
標示符由字母、下劃線和數字組成,且數字不能開頭
思考:下面的標示符哪些是正確的,哪些不正確爲何
fromNo12 from#12 my_Boolean my-Boolean Obj2 2ndObj myInt test1 Mike2jack My_tExt _test test!32 haha(da)tt int jack_rose jack&rose GUI G.U.I
見名知意
起一個有意義的名字,儘可能作到看一眼就知道是什麼意思(提升代碼可 讀性) 好比: 名字 就定義爲 name , 定義學生 用 student
駝峯命名法
小駝峯式命名法(lower camel case): 第一個單詞以小寫字母開始;第二個單詞的首字母大寫,例如:myName、aDog
大駝峯式命名法(upper camel case): 每個單字的首字母都採用大寫字母,例如:FirstName、LastName
不過在程序員中還有一種命名法比較流行,就是用下劃線「_」來鏈接全部的單詞,好比send_buf
什麼是關鍵字
python一些具備特殊功能的標示符,這就是所謂的關鍵字
關鍵字,是python已經使用的了,因此不容許開發者本身定義和關鍵字相同的名字的標示符
查看關鍵字:
and as assert break class continue def del elif else except exec finally for from global if in import is lambda not or pass print raise return try while with yield
能夠經過如下命令進行查看當前系統中python的關鍵字
>>> import keyword >>> keyword.kwlist
關鍵字的學習以及使用,我們會在後面的課程中依依進行學習
# 打印提示 print('hello world') print('給個人卡---印度語,你好的意思')
好比有如下代碼:
pirnt("我今年10歲") pirnt("我今年11歲") pirnt("我今年12歲") ...
想想:
在輸出年齡的時候,用了屢次"我今年xx歲",可否簡化一下程序呢???
答:
字符串格式化
看以下代碼:
age = 10 print("我今年%d歲"%age) age += 1 print("我今年%d歲"%age) age += 1 print("我今年%d歲"%age) ...
在程序中,看到了%
這樣的操做符,這就是Python中格式化輸出。
age = 18 name = "xiaohua" print("個人姓名是%s,年齡是%d"%(name,age))
下面是完整的,它能夠與%符號使用列表:
格式符號 | 轉換 |
---|---|
%c | 字符 |
%s | 經過str() 字符串轉換來格式化 |
%i | 有符號十進制整數 |
%d | 有符號十進制整數 |
%u | 無符號十進制整數 |
%o | 八進制整數 |
%x | 十六進制整數(小寫字母) |
%X | 十六進制整數(大寫字母) |
%e | 索引符號(小寫'e') |
%E | 索引符號(大寫「E」) |
%f | 浮點實數 |
%g | %f和%e 的簡寫 |
%G | %f和%E的簡寫 |
在輸出的時候,若是有\n
那麼,此時\n
後的內容會在另一行顯示
print("1234567890-------") # 會在一行顯示 print("1234567890\n-------") # 一行顯示1234567890,另一行顯示-------
在Python中,獲取鍵盤輸入的數據的方法是採用 raw_input 函數(至於什麼是函數,我們之後的章節中講解),那麼這個 raw_input 怎麼用呢?
看以下示例:
password = raw_input("請輸入密碼:") print '您剛剛輸入的密碼是:', password
運行結果:
注意:
input()函數與raw_input()相似,但其接受的輸入必須是表達式。
>>> a = input() 123 >>> a 123 >>> type(a) <type 'int'> >>> a = input() abc Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<string>", line 1, in <module> NameError: name 'abc' is not defined >>> a = input() "abc" >>> a 'abc' >>> type(a) <type 'str'> >>> a = input() 1+3 >>> a 4 >>> a = input() "abc"+"def" >>> a 'abcdef' >>> value = 100 >>> a = input() value >>> a 100
input()接受表達式輸入,並把表達式的結果賦值給等號左邊的變量
沒有raw_input()函數,只有input()
而且 python3中的input與python2中的raw_input()功能同樣
python支持如下幾種運算符
下面以a=10 ,b=20爲例進行計算
運算符 | 描述 | 實例 |
---|---|---|
+ | 加 | 兩個對象相加 a + b 輸出結果 30 |
- | 減 | 獲得負數或是一個數減去另外一個數 a - b 輸出結果 -10 |
* | 乘 | 兩個數相乘或是返回一個被重複若干次的字符串 a * b 輸出結果 200 |
/ | 除 | x除以y b / a 輸出結果 2 |
// | 取整除 | 返回商的整數部分 9//2 輸出結果 4 , 9.0//2.0 輸出結果 4.0 |
% | 取餘 | 返回除法的餘數 b % a 輸出結果 0 |
** | 冪 | 返回x的y次冪 a**b 爲10的20次方, 輸出結果 100000000000000000000 |
>>> 9/2.0 4.5 >>> 9//2.0 4.0
運算符 | 描述 | 實例 |
---|---|---|
= | 賦值運算符 | 把=號右邊的結果給左邊的變量 num=1+2*3 結果num的值爲7 |
>>> a, b = 1, 2 >>> a 1 >>> b 2
運算符 | 描述 | 實例 |
---|---|---|
+= | 加法賦值運算符 | c += a 等效於 c = c + a |
-= | 減法賦值運算符 | c -= a 等效於 c = c - a |
*= | 乘法賦值運算符 | c *= a 等效於 c = c * a |
/= | 除法賦值運算符 | c /= a 等效於 c = c / a |
%= | 取模賦值運算符 | c %= a 等效於 c = c % a |
**= | 冪賦值運算符 | c **= a 等效於 c = c ** a |
//= | 取整除賦值運算符 | c //= a 等效於 c = c // a |
函數 | 說明 |
---|---|
int(x [,base ]) | 將x轉換爲一個整數 |
long(x [,base ]) | 將x轉換爲一個長整數 |
float(x ) | 將x轉換到一個浮點數 |
complex(real [,imag ]) | 建立一個複數 |
str(x ) | 將對象 x 轉換爲字符串 |
repr(x ) | 將對象 x 轉換爲表達式字符串 |
eval(str ) | 用來計算在字符串中的有效Python表達式,並返回一個對象 |
tuple(s ) | 將序列 s 轉換爲一個元組 |
list(s ) | 將序列 s 轉換爲一個列表 |
chr(x ) | 將一個整數轉換爲一個字符 |
unichr(x ) | 將一個整數轉換爲Unicode字符 |
ord(x ) | 將一個字符轉換爲它的整數值 |
hex(x ) | 將一個整數轉換爲一個十六進制字符串 |
oct(x ) | 將一個整數轉換爲一個八進制字符串 |
a = '100' # 此時a的類型是一個字符串,裏面存放了100這3個字符 b = int(a) # 此時b的類型是整型,裏面存放的是數字100 print("a=%d"%b)
密碼判斷
if 今天是週六或者週日: 約妹子 if 今天是情人節: 買玫瑰 if 今天發工資: 先還信用卡的錢 if 有剩餘: 又能夠happy了,O(∩_∩)O哈哈~ else: 噢,no。。。還的等30天
小總結:
if 要判斷的條件: 條件成立時,要作的事情
age = 30 print "------if判斷開始------" if age>=18: print "我已經成年了" print "------if判斷結束------"
------if判斷開始------ 我已經成年了 ------if判斷結束------
age = 16 print "------if判斷開始------" if age>=18: print "我已經成年了" print "------if判斷結束------"
運行結果: ------if判斷開始------ ------if判斷結束------
小總結:
注意:
代碼的縮進爲一個tab鍵,或者4個空格
python中的比較運算符以下表
運算符 | 描述 | 示例 |
---|---|---|
== | 檢查兩個操做數的值是否相等,若是是則條件變爲真。 | 如a=3,b=3則(a == b) 爲 true. |
!= | 檢查兩個操做數的值是否相等,若是值不相等,則條件變爲真。 | 如a=1,b=3則(a != b) 爲 true. |
<> | 檢查兩個操做數的值是否相等,若是值不相等,則條件變爲真。 | 如a=1,b=3則(a <> b) 爲 true。這個相似於 != 運算符 |
> | 檢查左操做數的值是否大於右操做數的值,若是是,則條件成立。 | 如a=7,b=3則(a > b) 爲 true. |
< | 檢查左操做數的值是否小於右操做數的值,若是是,則條件成立。 | 如a=7,b=3則(a < b) 爲 false. |
>= | 檢查左操做數的值是否大於或等於右操做數的值,若是是,則條件成立。 | 如a=3,b=3則(a >= b) 爲 true. |
<= | 檢查左操做數的值是否小於或等於右操做數的值,若是是,則條件成立。 | 如a=3,b=3則(a <= b) 爲 true. |
運算符 | 邏輯表達式 | 描述 | 實例 |
---|---|---|---|
and | x and y | 布爾"與" - 若是 x 爲 False,x and y 返回 False,不然它返回 y 的計算值。 | (a and b) 返回 20。 |
or | x or y | 布爾"或" - 若是 x 是 True,它返回 True,不然它返回 y 的計算值。 | (a or b) 返回 10。 |
not | not x | 布爾"非" - 若是 x 爲 True,返回 False 。若是 x 爲 False,它返回 True。 | not(a and b) 返回 False |