Python基礎學習——概述、基本數據類型、流程控制

1、Python基礎學習

  1、編程語言分類

   一、簡介

  • 機器語言:站在計算機的角度,說計算機能聽懂的語言,那就是直接用二進制編程,直接操做硬件
  • 彙編語言:站在計算機的角度,簡寫的英文標識符取代二進制去編寫程序,本質仍然是直接操做硬件
  • 高級語言:站在人的角度,說人話;即用人類的字符去編寫程序,屏蔽了硬件操做

  二、優缺點

語言      優勢                              缺點
機器語言  最底層,執行速度快                最複雜,開發效率最低
彙編語言  比較底層,執行速度較快             複雜,開發效率低
高級語言  編譯型:
           執行速度快,不依賴語言環境運行    跨平臺差
         解釋型:
           跨平臺好,一份代碼,導出可用      執行速度慢,依賴解釋器才行
高級語言又分爲:編譯型和解釋型
    編譯型:執行速度快,調試麻煩
    解釋型:執行速度慢,調試方便

  三、比較三種語言

  學習難度從高到低
  執行效率從高到低
  開發效率從低到高

  四、語言排行

  最新排行見連接:https://www.tiobe.com/tiobe-index/html

  下面是18年與17年的排行對比表python

  

  2、Python介紹

  一、目前Python主要應用領域

  1. WEB開發——最火的Python web框架Django, 支持異步高併發的Tornado框架,短小精悍的flask,bottle, Django官方的標語把Django定義爲the framework for perfectionist with deadlines(大意是一個爲徹底主義者開發的高效率web框架)
  2. 網絡編程——支持高併發的Twisted網絡框架, py3引入的asyncio使異步編程變的很是簡單
  3. 爬蟲——爬蟲領域,Python幾乎是霸主地位,Scrapy\Request\BeautifuSoap\urllib等,想爬啥就爬啥
  4. 雲計算——目前最火最知名的雲計算框架就是OpenStack,Python如今的火,很大一部分就是由於雲計算
  5. 人工智能——誰會成爲AI 和大數據時代的第一開發語言?這本已經是一個不須要爭論的問題。若是說三年前,Matlab、Scala、R、Java 和 Python還各有機會,局面尚且不清楚,那麼三年以後,趨勢已經很是明確了,特別是前兩天 Facebook 開源了 PyTorch 以後,Python 做爲 AI 時代頭牌語言的位置基本確立,將來的懸念僅僅是誰能坐穩第二把交椅。
  6. 自動化運維——問問中國的每一個運維人員,運維人員必須會的語言是什麼?10我的相信會給你一個相同的答案,它的名字叫Python
  7. 金融分析——我我的以前在金融行業,10年的時候,咱們公司寫的好多分析程序、高頻交易軟件就是用的Python,到目前,Python是金融分析、量化交易領域裏用的最多的語言
  8. 科學運算—— 你知道麼,97年開始,NASA就在大量使用Python在進行各類複雜的科學運算,隨着NumPy, SciPy, Matplotlib, Enthought librarys等衆多程序庫的開發,使的Python愈來愈適合於作科學計算、繪製高質量的2D和3D圖像。和科學計算領域最流行的商業軟件Matlab相比,Python是一門通用的程序設計語言,比Matlab所採用的腳本語言的應用範圍更普遍
  9. 遊戲開發——在網絡遊戲開發中Python也有不少應用。相比Lua or C++,Python 比 Lua 有更高階的抽象能力,能夠用更少的代碼描述遊戲業務邏輯,與 Lua 相比,Python 更適合做爲一種 Host 語言,即程序的入口點是在 Python 那一端會比較好,而後用 C/C++ 在很是必要的時候寫一些擴展。Python 很是適合編寫 1 萬行以上的項目,並且可以很好地把網遊項目的規模控制在 10 萬行代碼之內。另外據我所知,知名的遊戲<文明> 就是用Python寫的

  二、Python有哪些種類

咱們如今知道了Python是一門解釋型語言,代碼想運行,必須經過解釋器執行,Python的解釋器自己也能夠看做是個程序(翻譯官司是哪國人不重要),這個程序是什麼語言開發的呢? 答案是好幾種語言? what? 由於Python有好幾種解釋器,分別基於不一樣語言開發,每一個解釋器特色不一樣,但都能正常運行咱們的Python代碼,下面分別來看下:

#CPython:CPython是使用最廣且被的Python解釋器。本教程以CPython爲準。
當咱們從Python官方網站下載並安裝好Python 2.7後,咱們就直接得到了一個官方版本的解釋器:CPython。這個解釋器是用C語言開發的,因此叫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的字節碼。
View Code

  三、Python的優缺點 

序號程序員

優勢web

缺點算法

1編程

簡單易懂,易於學習flask

運行速度慢,可是在大多數狀況下已經徹底知足了對程序速度的需求,除非寫對速度要求極高的搜索引擎等windows

2瀏覽器

開發效率高網絡

代碼不能加密——Python是解釋型語言,因此它的源碼是以明文形式存在的

3

高級語言——無需考慮底層細節

線程不能利用多CPU問題

4

可移植性——Python幾乎能夠移植到任何操做系統上運行

 

5

可擴展性——若想的一段代碼運行的更快或者但願某些算法不公開,你能夠把你的部分程序用C或C++編寫,而後在你的Python程序中使用它們。

 

6

可嵌入性——你能夠把Python嵌入你的C/C++程序,從而向你的程序用戶提供腳本功能

 

  3、Python解釋器

  Python目前已支持全部主流操做系統,在Linux,Unix,Mac系統上自帶Python環境,在Windows系統上須要安裝一下,超簡單

    打開官網 https://www.python.org/downloads/windows/ 下載中心

目前市場已開發軟件,大多數基於2.x版本,但2.x版本已經不作升級;因此3.x版本是將來應用的趨勢,因此須要安裝的這兩個版本,學習中瞭解之間差別所在,並能靈活運用
windows多版本並存,設置環境變量;並更改引用標識
設置環境變量
Python程序和script
不一樣版本並存
 運行程序的方式:
1、交互性執行代碼文件(調試方便,不能永久保存 )
2、建立程序保存到文件中(調試不方便,能夠永久保存),和文件後綴名無關
 運行過程 1、打開Python程序,放到內存中
2、讀取磁盤文件內容到內存中
3、執行文件內容

  4、變量

  一、定義

變量即變化的量,核心是「變」與「量」,變即變化,量即衡量狀態

  二、爲何要有變量

程序執行的本質就是一系列狀態的變化,變是程序執行的直接體現,因此須要一種機制可以 反應或者是保存下來程序執行狀態和狀態的變化。

  三、如何定義變量

變量名 賦值 變量值

內存(空間)地址經過ID標識

刪除內存空間(其餘語言須要寫代碼進行刪除操做,Python有本身內存管理機制,會自定刪除)
##方法1:從新定義變量名
##方法2:刪除變量的綁定關係 del age 

#while 設定變量,改變一次變量,全部的生效

   四、變量定義規範

  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']

  注意:一、變量名不要爲中文、拼音

     二、變量名過長

     三、變量名詞不達意

  五、定義方式

  1. 駝峯法  例如:AgeOfEgon = 18
  2. 下劃線法(推薦使用) 例如:age_of_Egon =18

  六、定義變量會有:id,type,value

  1. 等號比較的是value
  2. is比較的是id

  強調:一、id相同,意味着type和value一定相同

     二、value相同,type確定相同,但id不必定相同

  

  七、常量

  常量是指不變的量:如π,在程序運行過程當中不會變化的量

  在Python中沒有一個專門的語法表明常量,程序員約定俗稱用變量名所有大寫表明常量 例如:AGE_OF_DOG = 10

  5、用戶與程序交互

  一、python3與python2 的區別

  http://www.javashuo.com/article/p-tbwnlmpq-q.html

  更詳細:http://www.javashuo.com/article/p-zhpvrmid-d.html

#在python3中
input:用戶輸入任何值,都存成字符串類型

#在python2中
input:用戶輸入什麼類型,就存成什麼類型
raw_input:等於python3的input

  二、註釋

  1. 單行註釋,用#;多行註釋用''' '''
  2. 註釋能夠用中文或者英文,但不要用中文

  三、在Linux中文件頭

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# __author__ = "wzs"
# Date: ${DATE}

  6、基本數據類型

  一、數字

    一、int整型

    定義:age=28 #age=int(28)的簡寫

    用於標識:年齡,等級,個數等只能整數標識的東西

    二、浮點型

    定義:salary=10000.33,#salary=float(10000.33)

    用於標識:工資、身高、體重等

  二、字符串

  在python中,加了引號就是字符串累心,python並無字符類型

    定義:name='wzs' #name=str('wzs')

    用於標識:描述性的內容(單一屬性),如國籍,姓名,性別等等

    單引號、雙引號、多引號有什麼區別
    通常狀況使用單引號便可,但在所描述的內容有單引號時,外面須要用雙引號
    msg = "I'm 20 years old!

    多引號做用就是註釋多行字符串

1 msg = '''
2 今天是2017年9月5日17:15:11
3 星期二
4 天氣:晴
5 '''
6 print(msg)

    字符串拼接:字符串只能進行相加和相乘運算(注意:字符串相加效率不高,並且只能是字符串相加,數據量小時,可使用)

  字符串1+字符串2,並不會在字符串1的基礎上加字符串2,而是申請一個新的空間存放字符串1和字符串2,至關於字符串1和字符串2的空間被複制了一份

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 name = 'wzs'
4 age =  '26'
5 nationality = '中國'
6 print(name+age+nationality)
7 print(name*3)

  三、列表

  在[ ]內用逗號分隔,能夠是n個任意類型的值

  定義:students = ['xiaoming','alex','egon','Dave']

  用於標識:存儲多個值的狀況,一個組內有多個值

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 hobbies = ['play','read','run','music']
 4 print(type(hobbies))
 5 print(hobbies[0])
 6 print(hobbies[2])
 7 print(hobbies[-2])
 8 
 9 l = [1,'wzs',4,['a','b']]
10 print(l[3][1])

  四、字典

  在{ }內用逗號分隔,能夠存放多個key:value的值,value能夠是任意類型的值

  定義:info = {'name':'wzs','age':28,'height':170}

  用於標識:存儲多個值的狀況,每一個值都是惟一一個對應的key,能夠更高效的取值

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 info = {
 4     'name':'wzs',
 5     'hobbies':['run','read'],
 6     'company_info':{
 7         'name':'騰訊',
 8         'type':'互聯網',
 9     }
10 }
11 print(info['company_info']['type']) #取出人員所在公司的類型

  五、布爾值

  邏輯判斷——布爾值有兩個:True和Flase

  判斷一個條件成立時,返回True標識;判斷一個條件不知足時,返回Flase標識。

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 a = 3
 4 b = 10
 5 print(a > b)
 6 print(a < b)
 7 
 8 if a > b:
 9     print('a is bigger than b')
10 else:
11     print('a is smaller than b')

  重點:

    一、可變類型(mutable):在id不變的狀況下,value能夠變,則稱爲可變類型,如列表、字典(可變類型不可hash)

    二、不可變類型(unmutable):value一旦改變,id也改變,則稱爲不可變類型(id變,意味着建立了新的內存空間),例如:數字,字符串,元組

  7、格式化輸出

  要求用戶輸入信息,而後打印成固定的格式

  佔位符:%s  %d數字

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 # __author__ = "wzs"
 4 # Date: 2017/9/3
 5 
 6 name = input("Name:")
 7 age = input("Age:")
 8 sex = input("Sex:")
 9 job = input("Job:")
10 
11 info1 = '''
12 ----------------info of {0}---------------------
13 Name  :{0}
14 Age   :{1}
15 Sex   :{2}
16 Job   :{3}
17 -----------------end----------------------------
18 '''.format(name,name,age,sex,job)
19 
20 # print(info1)
21 info2 = '''
22 ----------------info of %s---------------------
23 Name  :%s
24 Age   :%s
25 Sex   :%s
26 Job   :%s
27 -----------------end----------------------------
28 '''%(name,name,age,sex,job)
29 print(info2)
View Code 

  8、基本運算符

  計算機能夠進行的運算有不少種,可不僅加減乘除這麼簡單,運算按種類可分爲算數運算、比較運算、邏輯運算、賦值運算、成員運算、身份運算、位運算,今天咱們暫只學習算數運算、比較運算、邏輯運算、賦值運算

  一、算術運算

  

  二、比較運算

  

  三、賦值運算

  

   四、邏輯運算

  

  五、身份運算

  

   9、流程控制:if..else條件語句

   特色:沒有代碼塊標誌符,python的代碼特色是以縮進爲標誌

  一、單條件判斷

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 # __author__ = "wzs"
 4 # Date: 2017/9/3
 5 
 6 age = input('>>:')
 7 age=int(age)
 8 if age >= 18:
 9     print('Please come in!')
10 else:
11     print('Do Not Enter!!!')

  二、多條件判斷

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 # __author__ = "wzs"
 4 # Date: 2017/9/3
 5 
 6 age = input('age>>:')
 7 age=int(age)
 8 sex = input('sex>>:')
 9 card = input('card>>:')
10 if age >= 18 and sex == 'male' and card == '':
11     print('Please come in!')
12 else:
13     print('Do Not Enter!!!')

  三、多層if條件(if嵌套)

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 # __author__ = "wzs"
 4 # Date: 2017/9/3
 5 
 6 age = input('age>>:')
 7 age=int(age)
 8 sex = input('sex>>:')
 9 card = bool(input('card>>:'))
10 success = False
11 # success = True
12 if age >= 18 and sex == 'male' and card == True:
13     if success:
14         print('Please come in!')
15     else:
16         print('Please leave here!')
17 else:
18     print('Do Not Enter!!!')

  四、if 多分支

  if ..elif ..elif..else #能夠查看三次分數的等級

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 # __author__ = "wzs"
 4 # Date: 2017/9/5
 5 
 6 count = 0
 7 while count < 3:
 8     score = int(input("your score>>:"))
 9     count += 1
10     if score >= 90:
11         print('優秀')
12     elif score >= 80:
13         print('良好')
14     elif score >= 70:
15         print('及格')
16     else:
17         print('太差了')
View Code

  10、流程控制:while循環

while 條件:
循環體
若是條件爲真,那麼循環體則執行,執行完畢後再次循環,從新判斷條件。。。
若是條件爲假,那麼循環體不執行,循環終止

  一、break 跳出本層循環

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 # __author__ = "wzs"
 4 # Date: 2017/9/5
 5 count = 0
 6 while True:
 7     if count > 100:
 8         break
 9     print(count)
10     count +=1

  二、continue跳出本次循環

  從0到10,跳過7

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 # __author__ = "wzs"
 4 # Date: 2017/9/5
 5 count = 0
 6 while count <= 10:
 7     if count == 7: 
 8         count +=1 ##注意這個是必須的
 9         continue
10     print(count)
11     count +=1
1 count = 0
2 while count <= 10:
3     # if count == 7:
4     #     break
5     print(count)
6     count +=1
7 else:
8     print('while正常結束了,沒有被break打斷,纔會執行這裏的代碼')

  三、死循環

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 # __author__ = "wzs"
 4 # Date: 2017/9/5
 5 import time
 6 num = 0
 7 while True:
 8     print('count',num)
 9     time.sleep(1)
10     num+=1
View Code

  四、嵌套循環

  範例

 1   tag=True 
 2 
 3   while tag:
 4 
 5     ......
 6 
 7     while tag:
 8 
 9       ........
10 
11       while tag:
12 
13         tag=False

  五、練習

    1 循環驗證用戶輸入的用戶名與密碼
    2 認證經過後,運行用戶重複執行命令
    3 當用戶輸入命令爲quit時,則退出整個程序 
 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 # __author__ = "wzs"
 4 # Date: 2017/9/5
 5 
 6 name = 'wzs'
 7 password = 'wzs123'
 8 
 9 while True:
10     Name = input('用戶名:')
11     Pwd = input('密碼:')
12     if Name == name and Pwd == password:
13         cmd = input('命令>>:')
14         if not cmd:continue
15         if cmd == 'quit':
16             break
17         print('run <%s>' %cmd)
18     else:
19         print('用戶名或密碼錯誤')
20         continue
21     break
View Code

  使用tag的

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 # __author__ = "wzs"
 4 # Date: 2017/9/5
 5 
 6 name = 'wzs'
 7 password = 'wzs123'
 8 tag = True
 9 while tag:
10     Name = input('用戶名:')
11     Pwd = input('密碼:')
12     if Name == name and Pwd == password:
13         while tag:
14             cmd = input('命令>>:')
15             if not cmd:continue
16             if cmd == 'quit':
17                 break
18             print('run <%s>' %cmd)
19     else:
20         print('用戶名或密碼錯誤')
21         continue
22     break
View Code

  11、流程控制:for循環

  一、迭代式循環

for i in range(10):
    print(i)

  二、九九乘法表

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 for i in  range(1,10):
4     for j in range(1,i+1):
5         print('%d * %d = %d'%(i,j,i*j),end='\t')
6     print('')
相關文章
相關標籤/搜索