java 再90年代 跨平臺語言,操做系統(windows ,unix 、linux)java
PYTHON:使用領或幾乎和JAVA同樣廣這,但開發效辛要高於JAVA,且學習成本較低,在料學運算\教據分析\網站開發\爬蟲開發\雲計算八自動化運維\自動化測試等領城優點明顯、
python
人工智能——誰會成爲Al和大散據時代的第一開發語言?這本已經是一個不須要爭論的問題。若是說三年前,linux
Matlab、Scala、R、Java和Python還各有機會,局面尚且不清楚,那麼三年以後,趨勢已經很是明確了,特別是前兩天Facebook 開源了PyTorch以後,Python做爲Al時代頭牌語言的位置基本確立,將來的懸念僅僅是誰能坐穩第二把交椅git
"Life is short,you need Python!"
-Bruce Eckel
C++Comitee member程序員
小結web
機器語言
優勢是最底層,速度最快,缺點是最複雜,開發效率最低
彙編語言
優勢是比較底層,速度最快,缺點是複雜,開發效和最低
高級語言
偏譯型語言執行速度快,不依奶語言環境運行,跨平臺差
解釋型跨平臺好,一份代碼,處處使用,缺點是執行速度慢,依賴解釋器運行shell
吉多·範羅蘇姆(Guido van Rossum)
1989年的聖誕節期間,Guido開始寫Python語言的編譯器。Python這個名字,
來自Guido所摯愛的電視劇Monty Python's Flying Circus。他但願這個新的
叫作Python的語言,能符合他的理想:創造一種C和shell之間,功能全面,
|易學易用,可拓展的語言。
2005年加入谷歌至2012年,2013年加入Dropbox直到如今
依然掌握着Python發展的核心方向,被稱爲仁慈的獨裁者編程
python 發展史
1989年,Guido開始寫Python語言的編譯器。
1991年,第一個Python編譯器誕生。它是用C語言實現的,並可以調用C語言的庫文件。從一出生,Python已經具備了:類,
函數,異常處理,包含表和詞典在內的核心數據類型,以及模塊爲基礎的拓展系統。
Granddaddy of Python web frameworks,Zope 1 was released in 1999
Python 1.0-January 1994增長了 lambda,map,filter and reduce.
Python 2.0-October 16,2000,加入了內存回收機制,構成了如今Python語言框架的基礎
Python 2.4-November 30,2004,同年目前最流行的WEB框架Django誕生
Python 2.5-September 19,2006
Python 2.6-October 1,2008+
Python 3.0-December 3,2008
Python 2.7-July 3,2010
Python 3.1-June 27,2009
Python 3.2-February 20,2011
Python 3.3-September 29,2012
Python 3.4-March 16,2014
In November 2014,it was announced that Python 2.7 would be supported until 2020,and reaffirmed that there would beno 2.8 release as users were expected to move to Python 3.4+as soon as possible
Python 3.5-September 13,2015
*Python3.6-2016-12-23發佈python3.6.0版flask
CPython
當咱們從Python官方網站下載並安裝好Python2.7後,咱們就直接得到了一個官方版本的解釋器:CPython。這個解釋器是用C語言開發的,因此叫CPython。在命
令行下運行python就是啓動CPython解釋器。
CPython是使用最廣且被的Python解釋器。教程的全部代碼也都在CPython下執行。
IPython
IPython是基於CPython之上的一個交互式解釋器,也就是說,IPython只是在交互方式上有所加強,可是執行Python代碼的功能和CPython是徹底同樣的。比如不少
國產瀏覽器雖然外觀不一樣,但內核其實都是調用了E。
PyPy
PyPy是另外一個Python解釋器,它的目標是執行速度。PyPy採用JIT技術,對Python代碼進行動態編譯(注意不是解釋),因此能夠顯著提升Python代碼的執行速度。
Jython是運行在Java平臺上的Python解釋器,能夠直接把Python代碼編譯成Java字節碼執行。
lronPython
IronPython和Jython相似,只不過ronPython是運行在微軟.Net平臺上的Python解釋器,能夠直接把Python代碼編譯成.Net的字節碼小程序
用notepad++建立一個文件,輸入如下代碼
prigt("Hello World!")
print(「Python好簡單呀,我要學好掙大錢!")
保存爲HelloWorld.py,注意.py後綴名的做用
進入cmd命令行,執行python HelloWorld.py,看結果
*注意文件名前面加python的緣由是要把代碼交給python解釋器去解釋執行
計算機的主要做用之一是進行計算,用Python進行數值運算很是容易,跟咱們日常用計算器同樣簡單
程序實現
你發現沒有?你在最後在算總消費的時候直接用的是以前已經算好的中間結果,爲何這麼作?都知道這樣是爲了不從新再算一遍全部的數據。那在程序中呢?
>>>print('eat',10+15+7+4+7+3) eat 46 >>>print('cloth',20) cloth 20 >>>print('traffic',6+6+6+6+6) traffic 30 >>>print(精神」,300+300+400+200) 精神1200 >>> >>> >>>print('總消費,46+20+30+1200) 總消費1296*
聲明變量
name="Alex Li"
變量定義規則
·變量名只能是字母、數字或下劃線的任意組合
·變量名的第一個字符不能是數字
·如下關鍵字不能聲明爲變量名[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]
駝峯體
Age0f0ldboy=56
NumberOfStudents=80
下劃線
age_,of_oldboy=56
number_of_students=80
官方推薦用哪一種?
定義變量的Low方式
常量即指不變的量,如pai 3.141592653..,或在程序運行過程當中不會改變的量
在Python中沒有一個專門的語法表明常量,程序員約定俗成用變量名所有大寫表明常量
AGE_OF_OLDBOY=56
在c語言中有專門的常量定義語法,const int count=60;一旦定義爲常量,更改即會報錯
讀取用戶輸入
name=input("What is your name?")
執行腳本就會發現,程序會等待你輸入姓名後再往下繼續走。
print("Hello"+name)
可讓用戶輸入多個信息,以下
name=input("What is your name?")
age=input("How old are you?")
hometown=input("Where is your hometown?")
print("Hello ",name,"your are ",age,"years old,you came from",hometown)
什麼是數據類型?
咱們人類能夠很容易的分清數字與字符的區別,可是計
算機並不能呀,計算機雖然很強大,但從某種角度上看
又很傻,除非你明確的告訴它,1是數字,「漢」是文字,
不然它是分不清1和「漢’的區別的,所以,在每一個編程語
言裏都會有一個叫數據類型的東東,其實就是對經常使用的
各類數據類型進行了明確的劃分,你想讓計算機進行數
值運算,你就傳數字給它,你想讓他處理文字,就傳字
符串類型給他。Python中經常使用的數據類型有哪些呢
int(整型)
·在32位機器上,整數的位數爲32位,取值範圍爲-231~231-1,即-2147483648~214748364
·在64位系統上,整數的位數爲64位,取值範圍爲-263~263-1,即-9223372036854775808
~9223372036854775807
long(長整型)
跟C語言不一樣,Python的長整數沒有指定位寬,即:Python沒有限制長整數數值的大小,但實際上由
於機器內存有限,咱們使用的長整數數值不可能無限大。
注意,自從Python2.2起,若是整數發生溢出,Python會自動將整數數據轉換爲長整數,因此現在在長
整數數據後面不加字母L也不會致使嚴重後果了。
o注意在Python3裏再也不有long類型了,全都是int
o除了int和long以外,其實還有float浮點型,複數型,但今天先不講啦
在Python中,加了引號的字符都被認爲是字符串!
>>>name="Alex Li" #雙引號
>>>age="22" #只要加引號就是字符串
>>>age2=22 #int
>>>msg="My name is Alex,I am 22 years old!' #我擦,3個引號也能夠
>>>hometown='ShanDong' #單引號也能夠
那單引號、雙引號、多引號有什麼區別呢?
單雙引號木有任何區別,只有下面這種狀況你須要考慮單雙的配合
msg="My name is Alex,I'm 22 years old!"
多引號什麼做用呢?
做用就是多行字符串必須用多引號
msg = '''
今天我想寫首小詩,
歌頌個人同桌,
你看他那烏黑的短髮,
好像一隻炸毛雞。
'''
print(msg)
數字能夠進行加減乘除等運算,字符串呢?讓我大聲告訴你
也能!what?是的,但只能進行「相加「和「相乘「運算。
>>>name
Alex Li'
>>>age
'22'
>>>name+age #相加其實就是簡單拼接
‘ALex Li22’
>>>
>>>name * 10 #相乘其實就是複製本身多少次,再拼接在一塊兒
‘Alex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex Li'
注意,字符串的拼接只能是雙方都是字符串,不能跟數字或其它類型拼接單雙引號
>>>type(name),type(age2)
(<type'str'>,<type‘int'>)
>>>
>>>name
‘Alex Li'
>>>age2
22
>>>name+age2
Traceback(most recent call last):
File"
TypeError:cannot concatenate 'str'and ‘int'objects #錯誤提示數字和字符不能拼接
布爾類型很簡單,就兩個值,一個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)
如何實現這個小程序
name=input("Name:") age=input("Age:") job=input("Job:") hometown=input("Hometown:") #print("------—-info of",name,----') #print("Name:",name) #print("Age:",age) #print("Job:",job) #print("-------end----") info = """ ------------ info of %s------------- Name: %s Age : %s Job : %s Hometown: %s ------------ end ------------------ """ % (name,name,age,job,hometown) #s = string #d = digit #f = float print(info)
計算機能夠進行的運算有不少種,可不僅加減乘除這麼簡單,運算按種類可分爲算數運算、比較運算、邏輯運算、賦值運算、成員運算、身份運算、位運算,
今天咱們暫只學習算數運算、比較運算、邏輯運算、賦值運算
如下假設變量:a=10,b=20
運算符 | 描述 | 實例 |
---|---|---|
+ | 加-兩個對象相加 | a+b輸出結果30 |
- | 減-獲得負數或是一個數減去另外一個數 | a-b輸出結果-10 |
* | 乘-兩個數相乘或是返回一個被重複若干次的字符串 | a*b輸出結果200 |
/ | 除-x除以y | b/a輸出結果2 |
% | 取模-返回除法的餘數 | b%a輸出結果0 |
** | 冪-返回x的y次冪 | a**b爲10的20次方,輸出結果100000000000000000000 |
// | 取整除-返回商的整數部分 | 9//2輸出結果4,9.0/2.0輸出結果4.0 |
如下假設變量:a=10,b=20
如下假設變量:a=10,b=20
單分支
if 條件:
知足條件後要執行的代碼
練習:
·輸入姓名、性別,判斷若是是女生,打印,我喜歡女生!
·輸入姓名、性別,判斷若是是女生且年齡小於28歲,打印,我喜歡女生!
雙分支
if條件:
知足條件執行代碼
else:
if條件不知足就走這段
Age0f0ldboy=48 if Age0f0ldboy>50: print("Too old,time to retire..") else: print(「還能折騰幾年!")
練習:
·輸入姓名、性別,判斷若是是女生,打印我喜歡女生,不然,打印一塊兒來搞基!
·輸入姓名、性別、年齡,判斷若是是女生且年齡小於28歲,打印我喜歡女生,不然,打印姐弟戀也很好奧!
·輸入姓名、性別、年齡,判斷若是是女生且年齡小於28歲,打印我喜歡女生,不然,打印姐弟戀也很好奧!若是是男生,打印一塊兒來搞基!
name=input("name:") sex=input("sex:") age=int(input("Age:")) #if sex=='fl: ##1若是是女生 #1.1若是年齡小於28 #1.1.1打印喜歡女生 #1.2打印姐弟戀很好 #2.若是是男生,打印搞基 if sex=="f": if age<28: print("I love girls") else: print(「姐弟戀也很好」) else: print(「一塊兒來搞基") print("----here ....")
多分支
if 條件: 知足條件執行代碼 elif 條件: 上面的條件不知足就走這個 elif 條件: 上面的條件不知足就走這個 elif 條件: 上面的條件不知足就走這個 else: 上面全部的條件不知足就走這段
練習:
#_*_coding:utf-8_*_ age=26 user_guess=int(input("your guess:")) if user_guess == age : print("恭喜你答對了,能夠抱得傻姑娘回家!") elif user_guess < age: print("try bigger") else : print("try smaller") ---------------------------------------------- age_of_oldboy=48 guess=int(input("s>:") if guess>age_of_oldboy: print("猜的太大了,往小裏試試…") elif guess<age_of_oldboy: print("猜的過小了,往大里試試..") else: print("恭喜你,猜對了.")
再來個匹配成績的小程序吧,成績有ABCDE5個等級,與分數的對應關係以下
A 90-100
B 80-89
C 60-79
D 40-59
E 0-39
要求用戶輸入O-100的數字後,你能正確打印他的對應成績
if score>100: print("成績最多隻能到100") elif score>=90: print("A") elif score>=80: print("B") elif score >=60: print("C") elif score >=40: print("D") elif score >= 0: print("E") else: print("成績不能是負數")
猜年齡遊戲升級版,容許用戶最多猜3次!
即便是小白的你,也以爲的太low了是否是,之後要修改功能還得修改3次。
所以記住,寫重複的代碼是程序員最不恥的行爲。
那麼如何作到不用寫重複代碼又能讓程序重複一段代碼屢次呢?循環語句就派上用場啦
while循環
語法
while條件:
執行代碼...
寫個讓程序從0打印到100的程序,每循環一次,+1+
count=0 while count <= 100 : #只要count<=100就不斷執行下面的代碼 print("loop",count) count +=1 #每執行一次,就把count+1,要否則就變成死循環啦,由於count一直是0 print('------loop is ended-----')
練習:
若是我想實現打印1到100的偶數怎麼辦呢?
循環打印1-100,第50次不打印值,第60-80次,打印對應值的平方。
#打印偶數 count=0 while count <= 100: if count % 2 == 0: #偶數 print("Loop",count) count+=1 print(----loop is ended----')
有一種循環叫死循環,一經觸發,就運行個天荒地老、海枯石爛。
while 是隻要後邊條件成立(也就是條件結果爲真)就一直執行,怎麼讓條件一直成立呢?```
count = 0 while True: #True自己就是真呀 print(「你是風兒我是沙,纏纏綿綿到天涯...",count) count += 1
循環終止語句
若是在循環的過程當中,由於某些緣由,你不想繼續循環了,怎麼把它停止掉呢?這就用到break或continue 語句
·break用於徹底結束一個循環,跳出循環體執行循環後面的語句
·continue和break有點相似,區別在於continue只是終止本次循環,接着還執行後面的循環,break則徹底終止循環
count = 0 while count <= 100 : #只要count<=100就不斷執行下面的代碼 print("loop",count) if count == 5: break count += 1 #每執行一次,就把count+1,要否則就變成死循環啦,由於count一直是0 print("----out of while loop----—-") 輸出 1oop 0 1oop 1 1oop 2 1oop 3 1oop 4 1oop 5 ----out of while loop-----
count=0 while count<=100: count+=1 if count>5 and count<95: #只要count在6-94之間,就不走下面的print語句,直接進入下一次loop continue print("loop",count) print("-----out of while loop---—-") 輸出 1oop 1 1oop 2 1oop 3 1oop 4 1oop 5 1oop 95 1oop 96 1oop 97 1oop 98 1oop 99 1oop 100 1oop 101 ---out of while loop------
練習:
·優化猜年齡遊戲,容許用戶最多猜3次,中間猜對了,直接跳出循環
·優化猜年齡遊戲,容許用戶最多猜3次,猜了3次後,再問是否還想玩,若是
用戶選y,剛再容許猜3次,以次往復…
-----------------------------------------------------------------------------
與其它語言else通常只與if搭配不一樣,在Python中還有個while..else 語句
while 後面的else做用是指,當while循環正常執行完,中間沒有被break停止的話,就會執行else後面的語句
開發工具IDE
代碼自動補全
語法錯誤提醒
代碼調試
性能測試
web開發框架支持
git/svn支持