Coy的Python之路--Day1

節內容

  1. Python介紹
  2. Python的版本和其餘語言的區別
  3. Python 2 or 3?
  4. Hello World
  5. 編碼
  6. 輸入輸出
  7. 變量
  8. 經常使用數據類型
  9. 表達式條件判斷
  10. 表達式循環語句 

1、 Python介紹                                                                                                                                                                                   

  python的創始人爲吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多·範羅蘇姆爲了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,做爲ABC語言的一種繼承。html

  Python是一款純粹的自由軟件,源代碼和解釋器CPython都遵循了GPL(GNU General Public License)協議。java

  Python語法清晰簡潔,最有特點的是用空白符做爲語句的縮進。python

  Python具備強大而豐富的類庫,也常常被別人說是膠水語言,能夠跟其它語言(c/c++)寫的模塊結合在一塊兒。常見的狀況是使用Python快速生成程序的原型,而後有一部分須要有特別高的要求,須要其它語言改寫。例如3D遊戲中的圖形渲染須要用到C/C++編寫,而後封裝成.py擴展類庫由Python調用。須要注意的使用擴展類型須要考慮跨平臺性。c++

 

由上圖可見,Python總體呈上升趨勢,反映出Python應用愈來愈普遍而且也逐漸獲得業內的承認!!!瀏覽器

  Python能夠應用於衆多領域,如:數據分析、組件集成、網絡服務、圖像處理、數值計算和科學計算等衆多領域。目前業內幾乎全部大中型互聯網企業都在使用Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等。網絡

目前Python主要應用領域:框架

  • 雲計算: 雲計算最火的語言, 典型應用OpenStack
  • WEB開發: 衆多優秀的WEB框架,衆多大型網站均爲Python開發,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
  • 科學運算、人工智能: 典型庫NumPy, SciPy, Matplotlib, Enthought librarys,pandas
  • 系統運維: 運維人員必備語言
  • 金融:量化交易,金融分析,在金融工程領域,Python不但在用,且用的最多,並且重要性逐年提升。緣由:做爲動態語言的Python,語言結構清晰簡單,庫豐富,成熟穩定,科學計算和統計分析都很牛逼,生產效率遠遠高於c,c++,java,尤爲擅長策略回測
  • 圖形GUI: PyQT, WxPython,TkInter

Python在一些公司的應用: 運維

  • 谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬蟲、Google廣告等項目都在大量使用Python開發
  • CIA: 美國中情局網站就是用Python開發的
  • NASA: 美國航天局(NASA)大量使用Python進行數據分析和運算
  • YouTube:世界上最大的視頻網站YouTube就是用Python開發的
  • Dropbox:美國最大的在線雲存儲網站,所有用Python實現,天天網站處理10億個文件的上傳和下載
  • Instagram:美國最大的圖片分享社交網站,天天超過3千萬張照片被分享,所有用python開發
  • Facebook:大量的基礎庫均經過Python實現的
  • Redhat: 世界上最流行的Linux發行版本中的yum包管理工具就是用python開發的
  • 豆瓣: 公司幾乎全部的業務均是經過Python開發的
  • 知乎: 國內最大的問答社區,經過Python開發(國外Quora)
  • 春雨醫生:國內知名的在線醫療網站是用Python開發的
  • 除上面以外,還有搜狐、金山、騰訊、盛大、網易、百度、阿里、淘寶 、土豆、新浪、果殼等公司都在使用Python完成各類各樣的任務。 

編譯和解釋型語言                                                                                                                                                                                                        

  編譯型是把源程序的每一條語句都編譯成機器語言,並保存成二進制文件,這樣運行時計算機能夠直接以機器語言來運行此程序,速度很快;函數

  解釋型則是隻在執行程序時,才一條一條的解釋成機器語言給計算機來執行,因此運行速度是不如編譯後的程序運行的快的. 這是由於計算機不能直接認識並執行咱們寫的語句,它只能認識機器語言(是二進制的形式)工具

  意思是說,解釋型語言式一條一條的解釋,編譯型語言是一次性編譯

編譯型vs解釋型

編譯型
優勢:編譯器通常會有預編譯的過程對代碼進行優化。由於編譯只作一次,運行時不須要編譯,因此編譯型語言的程序執行效率高。能夠脫離語言環境獨立運行。
缺點:編譯以後若是須要修改就須要整個模塊從新編譯。編譯的時候根據對應的運行環境生成機器碼,不一樣的操做系統之間移植就會有問題,須要根據運行的操做系統環境編譯不一樣的可執行文件。

解釋型
優勢:有良好的平臺兼容性,在任何環境中均可以運行,前提是安裝瞭解釋器(虛擬機)。靈活,修改代碼的時候直接修改就能夠,能夠快速部署,不用停機維護。

缺點:每次運行的時候都要解釋一遍,性能上不如編譯型語言。

2、 Python的版本和其餘語言的區別                                                                                                                                    

  • Cpython
        Python的官方版本,使用C語言實現,使用最爲普遍,CPython實現會將源文件(py文件)轉換成字節碼文件(pyc文件),而後運行在Python虛擬機上。
  • Jyhton
        Python的Java實現,Jython會將Python代碼動態編譯成Java字節碼,而後在JVM上運行。
  • IronPython
        Python的C#實現,IronPython將Python代碼編譯成C#字節碼,而後在CLR上運行。(與Jython相似)
  • PyPy(特殊)
        Python實現的Python,將Python的字節碼字節碼再編譯成機器碼。
  • RubyPython、Brython ...

 區別

  CPython

  當咱們從Python官方網站下載並安裝好Python 2.7後,咱們就直接得到了一個官方版本的解釋器:CPython。這個解釋器是用C語言開發的,因此叫CPython。在命令行下運行python就是啓動CPython解釋器。

CPython是使用最廣的Python解釋器。教程的全部代碼也都在CPython下執行。

  IPython

  IPython是基於CPython之上的一個交互式解釋器,也就是說,IPython只是在交互方式上有所加強,可是執行Python代碼的功能和CPython是徹底同樣的。比如不少國產瀏覽器雖然外觀不一樣,但內核其實都是調用了IE。

CPython用>>>做爲提示符,而IPython用In [序號]:做爲提示符。

  PyPy

  PyPy是另外一個Python解釋器,它的目標是執行速度。PyPy採用JIT技術,對Python代碼進行動態編譯(注意不是解釋),因此能夠顯著提升Python代碼的執行速度。

絕大部分Python代碼均可以在PyPy下運行,可是PyPy和CPython有一些是不一樣的,這就致使相同的Python代碼在兩種解釋器下執行可能會有不一樣的結果。若是你的代碼要放到PyPy下執行,就須要瞭解PyPy和CPython的不一樣點

  Jython

  Jython是運行在Java平臺上的Python解釋器,能夠直接把Python代碼編譯成Java字節碼執行。

  IronPython

  IronPython和Jython相似,只不過IronPython是運行在微軟.Net平臺上的Python解釋器,能夠直接把Python代碼編譯成.Net的字節碼。

速度對比

3、 Python 2 or 3?                                                                                                                                          

  Python的3​​.0版本,常被稱爲Python 3000,或簡稱Py3k。相對於Python的早期版本,這是一個較大的升級。爲了避免帶入過多的累贅,Python 3.0在設計的時候沒有考慮向下相容。

許多針對早期Python版本設計的程式都沒法在Python 3.0上正常執行。

  爲了照顧現有程式,Python 2.6做爲一個過渡版本,基本使用了Python 2.x的語法和庫,同時考慮了向Python 3.0的遷移,容許使用部分Python 3.0的語法與函數。新的Python程式建議使用Python 3.0版本的語法。

除非執行環境沒法安裝Python 3.0或者程式自己使用了不支援Python 3.0的第三方庫。目前不支援Python 3.0的第三方庫有Twisted, py2exe, PIL等。

大多數第三方庫都正在努力地相容Python 3.0版本。即便沒法當即使用Python 3.0,也建議編寫相容Python 3.0版本的程式,而後使用Python 2.6, Python 2.7來執行。

4、 Hello word                                                                                                                                                  

新創建一個.py的文件而後編輯內容

print "hello,world" 

就是在頁面上顯示hello world

python內部執行過程以下:

5、 編碼                                                                                                                                                                                                                                                                                                                              

python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認ascill)

ASCII(American Standard Code for Information Interchange,美國標準信息交換代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其餘西歐語言,其最多隻能用 8 位來表示(一個字節),即:2**8 = 256,因此,ASCII碼最多隻能表示 256 個符號。

Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼。Unicode 是爲了解決傳統的字符編碼方案的侷限而產生的,它爲每種語言中的每一個字符設定了統一而且惟一的二進制編碼,規定雖有的字符和符號最少由 16 位來表示(2個字節),即:2 **16 = 65536,
注:此處說的的是最少2個字節,可能更多

UTF-8,是對Unicode編碼的壓縮和優化,他再也不使用最少使用2個字節,而是將全部的字符和符號進行分類:ascii碼中的內容用1個字節保存、歐洲的字符用2個字節保存,東亞的字符用3個字節保存...

因此,python解釋器在加載 .py 文件中的代碼時,py2默認用ASCLL,py3默認用UTF-8

6、 輸入輸出                                                                                                                                                                                                                                                                                                           

name = input("你的名字:")
print(name)

輸入密碼時,若是想要不可見,須要利用getpass 模塊中的 getpass方法,即:

import getpass
val = input('請輸入用戶名:')
#val_pwd=input('請輸入密碼:')
pwd = getpass.getpass("請輸入密碼:")#暗密,不能在IDE中運行
print(val,pwd)

7、 變量                                                                                                                                     

變量定義的規則:

  • 變量名只能是 字母、數字或下劃線的任意組合
  • 變量名的第一個字符不能是數字
  • 如下關鍵字不能聲明爲變量名
    ['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']

8、 經常使用數據類型                                                                                                                                                                                                                                                                                                                 

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也不會致使嚴重後果了。
float(浮點型)
  浮點數用來處理實數,即帶有小數的數字。相似於C語言中的double類型,佔8個字節(64位),其中52位表示底,11位表示指數,剩下的一位表示符號。

complex(複數)
  複數由實數部分和虛數部分組成,通常形式爲x+yj,其中的x是複數的實數部分,y是複數的虛數部分,這裏的x和y都是實數。
注:Python中存在小數字池:-5 ~ 257
 
布爾值
真或假
1 或 0
字符串
能夠經過命令來查看
列表list
字典dict
 
a = 'sss'
print(type(a))

九、 表達式條件判斷                                                                                                                                

例子:
1.頁面顯示:請輸入用戶名
2.頁面顯示:請輸入密碼
3.若是用戶名等於「alex」而且密碼等於「boy」則成功
username = input("請輸入用戶名")
password = input("請輸入密碼")

if username == "alex" and password == "boy":
    print('登陸成功')
else:
    print('登陸失敗')

多條件判斷

user=input('請輸入用戶名:')
if user == 'alex':
    print('超級大boy')
elif user == 'oldboy':
    print('超級大老闆')
elif user == 'eric':
    print('超級大boss')
else:
    print('普通用戶')
print('結束')

條件嵌套

msg = """
歡迎致電10086
1,查詢話費
2,查水錶
3,人工服務
"""

print(msg)

choice = input("請選擇您所須要的服務")
if choice == "1":
    print("1.查詢話費;2.查詢他人手機;3.查詢座機")
    search_type = input("請輸入要查詢的類型:")
    if search_type == "1":
        print('查詢本機')
    elif search_type == "2":
        print("查詢他人手機")
    elif search_type == "3":
        print("查詢座機")
    else:
        print("輸入錯誤")
elif choice == "2":
    print("查水錶")
elif choice == "3":
    print("人工服務")
else:
    print("錯誤")

其中and爲邏輯運算

算數運算:

比較運算:

賦值運算:

成員運算:

身份運算:

位運算:

運算符優先級:

 10、 表達式及循環語句                                                                                                                                                                                                                                                             

 

有限循環 ,次數限制
無限循環=死循環
continue 結束本次循環,繼續下一次循環
break 跳出整個當前的循環

 while 循環                                                                                                                                               

while True:
    print('紅鯉魚與綠鯉魚與驢')

  

 這樣的話就會變成死循環

所以能夠在while 中加入條件

如:

print3次紅鯉魚與綠鯉魚與驢後打印完成

timer = 0
while timer < 3:
    print('紅鯉魚與綠鯉魚與驢')
    timer = timer + 1

print('完成')

 例子:

打印1-10

count =1
while count < 11:
    print(count)
    count = count + 1

break

在print結束後跳出循環體

while True:
    print('紅鯉魚與綠鯉魚與驢')
    break

  

continue

在循環中條件爲真,循環成立

這段代碼中,continue是跳出當前本次循環,因此條件成立變爲死循環

while True:
    print('sss')
    continue
    print('ooooo')

例子:

輸出1-10,break

count = 1
while True:
    print(count)
    count =count + 1
    if count == 11:
        break  

輸出1-10,其中不輸出7

count = 1
while count < 11:
    if count == 7:
        count = count + 1
        continue
    print(count)
    count = count + 1  

思路:

  1,要1-10因此必須<11,而後判斷count是否等於7

  2,等於7的時候跳出當次循環,注意,在count等於7的時候,必須count = count + 1,緣由是因,若是直接continue的話,那麼會夯住,只要到7就跳出

  例如:

  3,而後rount+1,最後打印

for循環                                                                                                                                        

for i in range(1,101):
    if i % 2 ==1:
    print ("loop:",i)


for i in range(100):
    if i < 50 or i > 70:
    print(i)  

用for循環模擬用戶登陸器1

 

_user = 'alex'
_passwd ='abc123'


for i in range(3):
    username = input("Username:")
    password = input("password:")
    if username == _user and password == _passwd:
        print("Welcome %s login..."%_user)
        break #跳出,中斷
    else:
        print("Invalid username or password !")
else:
    print("要不要臉")
思路:
            1,默認一個用戶名和密碼。用戶輸入後進行比對
            2,設置三次循環登陸,每次登陸成功顯示那個用戶後退出,每次登陸失敗打印Invalid username or password !
            3,登陸三次,失敗後打印「臭不要臉」

 

用for循環模擬用戶登陸器2

_user ="alex"
_passwd = "abc123"

passed_authentication = False #假,不成立

for i in range(3):
    username = input("Username:")
    password = input("Password:")
    if username == _user and password == _passwd :
        print("Welcome %s login...." % _user)
        passed_authentication = True #,真,成立
        break #跳出,中斷
    else:
        print("Invalid username or password !")
if not passed_authentication:#只有在True的狀況下,條件成立
    print("要不要臉,臭流氓啊") 
思路:
           1,默認一個用戶名和密碼,默認passed_authentication = False,用戶輸入後進行比對。
           2,設置三次循環登陸,每次登陸成功顯示那個用戶後,把 passed_authentication = True,顯示那個用戶後退出,每次登陸失敗打印Invalid username or password !
           3,登陸失敗三次後,判斷 passed_authentication,是true條件成立,打印「臭不要臉」

 

 

列表字典詳見day2。。。。。。                   

相關文章
相關標籤/搜索