python基礎知識1——簡介與入門

什麼是Python;Python能作什麼;安裝與更新;第一個Python程序;變量;pyc字節碼;編碼;條件和循環;Python運算符:算數,比較,賦值,位,邏輯;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;php

python簡介:           

1、什麼是python

Python(英國發音:/ pa θ n/ 美國發音:/ pa θɑ n/),是一種面向對象、直譯式的計算機程序語言。前端

每一門語言都有本身的哲學:python

pythonde 設計哲學是:「優雅」、「明確」、「簡單」linux

2、python由來

 1989年的聖誕節期間,吉多·範羅蘇姆爲了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,做爲ABC語言的一種繼承。之因此選中Python做爲程序的名字,是由於他是BBC電視劇——蒙提·派森的飛行馬戲團(Monty Python‘s Flying Circus)的愛好者。程序員

3、Python能作什麼

Web程序

Python常常被用於Web開發。好比,經過mod_wsgi模塊,Apache能夠運行用Python編寫的Web程序。使用Python語言編寫的Gunicorn做爲Web服務器,也可以運行Python語言編寫的Web程序。Python定義了WSGI(Web Server Gateway Interface)標準應用接口來協調Http服務器與基於Python的Web程序之間的溝通。一些Web框架,如Django、Pyramid、TurboGears、Tornado、web2py、Zope、Flask等,可讓程序員輕鬆地開發和管理複雜的Web程序。web

Python對於各類網絡協議的支持很完善,所以常常被用於編寫服務器軟件、網絡蠕蟲。第三方庫Twisted支持異步在線編寫程序和多數標準的網絡協議(包含客戶端和服務器),而且提供了多種工具,被普遍用於編寫高性能的服務器軟件。另有gevent這個流行的第三方庫,一樣可以支持高性能高併發的網絡開發。算法

GUI開發

Python自己包含的Tkinter庫可以支持簡單的GUI(Graphical User Interface)開發。可是愈來愈多的Python程序員選擇wxPython或者PyQt等GUI包來開發跨平臺的桌面軟件。使用它們開發的桌面軟件運行速度快,與用戶的桌面環境相契合。經過PyInstaller還能將程序發佈爲獨立的安裝程序包。django

操做系統編程

在不少操做系統裏,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。vim

其餘

NumPy、SciPy、Matplotlib可讓Python程序員編寫科學計算程序。有些公司會使用Scons代替make構建C++程序。

不少遊戲使用C++編寫圖形顯示等高性能模塊,而使用Python或者Lua編寫遊戲的邏輯、服務器。相較於Python,Lua的功能更簡單、體積更小;而Python則支持更多的特性和數據類型。不少遊戲,如EVE Online使用Python來處理遊戲中繁多的邏輯。

YouTube、Google、Yahoo!、NASA都在內部大量地使用Python。OLPC的做業系統Sugar項目的大多數軟件都是使用Python編寫

因此他的應用範圍大概分爲:

數據分析

系統編程

組件集成

網絡服務

圖像處理

數值計算和科學計算

Python能夠應用於衆多領域,如:數據分析、組件集成、網絡服務、圖像處理、數值計算和科學計算等衆多領域。目前業內幾乎全部大中型互聯網企業都在使用Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等。互聯網公司普遍使用Python來作的事通常有:自動化運維自動化測試大數據分析、爬蟲、Web 等。

注視:上述重點字體表示該公司主要使用Python語言開發

爲何是Python而不是其餘語言?

C 和 Python、Java、C#等

    C語言: 代碼編譯獲得 機器碼 ,機器碼在處理器上直接執行,每一條指令控制CPU工做

其餘語言: 代碼編譯獲得 字節碼 ,虛擬機執行字節碼並轉換成機器碼再後在處理器上執行

Python 和 C  Python這門語言是由C開發而來

  對於使用:Python的類庫齊全而且使用簡潔,若是要實現一樣的功能,Python 10行代碼能夠解決,C可能就須要100行甚至更多.
  對於速度:Python的運行速度相較與C,絕逼是慢了

Python 和 Java、C#等

  對於使用:Linux原裝Python,其餘語言沒有;以上幾門語言都有很是豐富的類庫支持
  對於速度:Python在速度上可能稍顯遜色

因此,Python和其餘語言沒有什麼本質區別,其餘區別在於:擅長某領域、人才豐富、先入爲主。

PS:

簡單的拿php和python作對比:

python是綜合性的語言,他不光能夠作web開發。他倆的對比應該僅限於web開發方向。不見其phpweb開發比python好,php是先入爲主,python的web框架在2000纔有的比較晚了

django起來的比較晚,他們的web開發都是很不錯了。你用php作的python均可以作。python給你的是一個完整的解決,前端和後端均可以用python。

簡單的拿C和python作對比:

Python慢,慢的嚴重,慢出風格,慢出自信!!!相同的程序Python比C慢幾百倍很正常

程序的快慢很大程度上程序員邏輯、SQL、算法,比起O(n)和O(n^2)的區別, 語言間的差別就顯得微乎其微

編程風格           

1、語法要求
–縮進統一
同一級別的代碼必須一致!(而且建議全部級別的代碼的縮進建議是相同的--必須,開發規範裏建議4個空格)建議不要用table由於若是想把代碼在windows上運行,linux和windows的table的定義不一樣!!!!
好的編輯器能提升開發代碼的效率!
全部python,第一行必定要頂到行頭! 同一級別的新的都要頂到行頭。

2、變量
標識符的第一個字符必須是字母表中的字母(大寫或小寫)或者一個下劃線(‘ _ ’)
標識符名稱的其餘部分能夠由字母(大寫或小寫)、下劃線(‘ _ ’)或數字(0-9)組成。
有效 標識符名稱的例子有i、__my_name、name_23和a1b2_c3。  
無效 標識符名稱的例子有2things、this is spaced out和my-name。
標識符名稱是對大小寫敏感的。例如,myname和myName不是一個標識符。注意前者中的小寫n和後者中的大寫N。 

常量:數值不變的
變量:數值會變更的量

在python中沒有常量的,全部的數值均可以改變,可是他依然有個常量的概念,可是是人爲的你不去改變他,定義一個常量應該用大寫的形式。

AGE = 10 這個就是常量,他是大寫的!是約定俗成的。可是他是能夠改的!
name =  'Tim Luo' 這個是變量

##這裏須要注意下,設置變量的時候不能設置python自帶的內置方法好比type
如下關鍵字不能聲明爲變量名

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

變量的起名的方式就是標識符名稱,經過標識符去調用內存中的數據。

Python環境        

1、安裝python

windows:

1 1、下載安裝包
2     https://www.python.org/downloads/
3 2、安裝
4     默認安裝路徑:C:\python27
5 3、配置環境變量
6     【右鍵計算機】--》【屬性】--》【高級系統設置】--》【高級】--》【環境變量】--》【在第二個內容框中找到 變量名爲Path 的一行,雙擊】 --> 【Python安裝目錄追加到變值值中,用 ; 分割】
7     如:原來的值;C:\python27,切記前面有分號

 

linux:

1 無需安裝,原裝Python環境
2    
3 ps:若是自帶2.6,請更新至2.7

 

2、更新python

windows:

1 卸載重裝便可

 

linux:

Linux的yum依賴自帶Python,爲防止錯誤,此處更新其實就是再安裝一個Python!

 1 查看默認Python版本
 2 python -V
 3    
 4 1、安裝gcc,用於編譯Python源碼
 5     yum install gcc
 6 二、下載源碼包,https://www.python.org/ftp/python/
 7 3、解壓並進入源碼文件
 8 4、編譯安裝
 9     ./configure
10     make all
11     make install
12 5、查看版本
13     /usr/local/bin/python2.7 -V
14 6、修改默認Python版本
15     mv /usr/bin/python /usr/bin/python2.6
16     ln -s /usr/local/bin/python2.7 /usr/bin/python
17 7、防止yum執行異常,修改yum使用的Python版本
18     vi /usr/bin/yum
19     將頭部 #!/usr/bin/python 修改成 #!/usr/bin/python2.6

 

 Python入門        

 1、第一句python

 vim hello.py 建立一個文件

1 #!//usr/bin/env python
2 #-*- conding:utf-8 -*-
3   
4 print "Hello World"

執行:

1 python hello.py 便可
2 或者增長執行權限:chmod 755 hello.py
3 ./hello.py

解釋:

1 1 #!//usr/bin/env python   #腳本用env啓動的緣由,是由於腳本解釋器在linux中可能被安裝於不一樣的目錄,env能夠在系統的PATH目錄中查找。同時,env還規定一些系統環境變量。env就是:envirnment 環境變量)
2 2 # -*- coding: utf-8 -*- 指定編碼類型爲utf-8 (詳情繼續閱讀)

2、編碼 

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

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

顯然ASCII碼沒法將世界上的各類文字和符號所有表示,因此,就須要新出一種能夠表明全部字符和符號的編碼,即:Unicode

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

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

因此,python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認ascill),因此若是不指定編碼類型,若是有中文就會報錯。

3、Python的工做過程

python 把代碼讀到內存  二、詞法語法分析 三、放到編譯器  ---》 生成字節碼   四、執行字節碼 ---》生成機器碼  CPU執行

4、執行腳本傳入參數

Python有大量的模塊,從而使得開發Python程序很是簡潔。類庫又包括三種:
         Python內部提供的模塊
         業內開源的模塊
         程序員本身開發的模塊
Python內部提供一個 sys 的模塊,其中的 sys.argv 用來捕獲執行執行python腳本時傳入的參數

1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3     
4 import sys
5     
6 print sys.argv

5、pyc文件

執行Python代碼時,若是導入了其餘的 .py 文件,那麼,執行過程當中會自動生成一個與其同名的 .pyc 文件,該文件就是Python解釋器編譯以後產生的字節碼。

ps:代碼通過編譯能夠產生字節碼;字節碼經過反編譯也能夠獲得代碼。(任何字節碼經過反編譯均可以獲得代碼)

6、變量

字符串的值是不能被修改的,他在內存裏是連續的,若是想改的話必須在後面預留因此不支持修改!
字符串特性,一旦修改,從新建立
例子:

1 name1 = "zhenghao"
2 name2 = name1
3 這裏而後把name1 = "haozheng"

name2 變不變呢?實際上是不變的,結合上面的規則來:字符串特性,一旦修改,從新建立
name1 = "haozheng" name1的值變了,他會從新開闢一塊內存空間!

注:

1 name1 = "zhenghao"
2 name2 = "zhenghao"

這裏雖然他們的內存地址是相同的,可是:他們的原理是各自在內存裏開闢了一塊內存空間,python給他進行了優化而已。有個池的概念(把你最經常使用的值作一個指向)!

集合又不相同:

1 name1 = ['zhenghao','eric','alex']  
2 若是把name2 = name1

name1 這個集合增長一個,如今name2 變不變呢?會變的,集合和字符串不一樣,他的各個元素不是連續的,因此name2=name1指向後,name1增長 一個元素不會開闢一塊新的空間,name2就會跟着改變。

7、輸入

1 #!/usr/bin/env python# -*- coding: utf-8 -*-
2 # 將用戶輸入的內容賦值給 name 變量
3    
4 name = raw_input("請輸入用戶名:")
5    
6 # 打印輸入的內容print name

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

 1 #!/usr/bin/env python
 2 
 3 # -*- coding: utf-8 -*-
 4    
 5 import getpass
 6    
 7 # 將用戶輸入的內容賦值給 name 變量
 8 pwd = getpass.getpass("請輸入密碼:")
 9    
10 # 打印輸入的內容
11 print pwd

在2.7裏,有input和row_input兩種方法,input方法獲得的是個整數,row_input方法獲得是字符串。而3裏只有input方法,得出的是個字符串

 

變量做用域

 

只要變量在內存中就能被調用!可是(函數的棧有點區別)

 

對於變量的做用域,執行聲明並在內存中存在,若是變量在內存中存在就能夠被調用。

 

1 if 1==1:
2     name = 'zhenghao'
3 print  name

 

因此下面的說法是不對的:

 

外層變量,能夠被內層變量使用
內層變量,沒法被外層變量使用

 

三元運算

 

1 result = 值1 if 條件 else 值2

 

若是條件爲真:result = 值1
若是條件爲假:result = 值2

 

例子:

 

1 name = raw_input("please input your name: ")
2 if name = "zhenghao":
3     print "you are so beautiful!!!"
4 else:
5     print "you are ok"

 

上面的例子能夠用三元運算一句解決:

 

1 name = raw_input("please input your name: ")
2 beautiful = "nvshen" if name == "zhenghao" else "is ok" 
3 print beautiful

 

注:循環能夠包含循環,列表能夠包含列表,元組固然也能夠包含元組,字典能夠包含字典!思想不要太侷限!放開想!

 

進制

 

  • 二進制,01
  • 八進制,01234567
  • 十進制,0123456789
  • 十六進制,0123456789ABCDEF

 

8、條件

if...else      和   if....elif...elif..........else

需求1、用戶身份認證

1 #!/usr/bin/env python
2 #-*- coding:utf-8 -*-
3 import getpass
4 name = raw_input("請輸入用戶名:")
5 pwd = raw_input("請輸入密碼:")
6 if name == "zhenghao" and pwd == "123456":
7     print "登陸成功"
8 else:
9 print "登陸失敗"

需求2、根據用戶輸入內容輸出其權限

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 '''
 4 zhenghao--->普通用戶
 5 eric--->管理用戶
 6 alex--->超級用戶
 7 '''
 8 name = raw_input("請輸入用戶名:")
 9 
10 if name == "zhenghao":
11     print "普通用戶"
12 elif name == "eric":
13     print "管理用戶"
14 elif name == "alex":
15     print "超級用戶"
16 else:
17     print "沒有此用戶"

循環

for i in range(100)    and   for i in xrange(1,100)

需求1、猜數字遊戲

有3次機會,若是3次中沒有猜中給予提示,3次都沒有猜中,鼓勵!

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 import random  # 隨機模塊
 4 
 5 rand_num = 5
 6 
 7 for i in range(3):
 8     guess_num = int(raw_input("請猜想數字:"))
 9     if guess_num == rand_num:
10         print "太棒了你猜對了"
11         break
12     elif guess_num > rand_num:
13         print "你猜想的有點大了,請嘗試小點的數字"
14     else:
15         print "你猜想的有點小了,請嘗試大點的數字"
16 else:
17     print "不要灰心,此次只是運氣很差,請下次嘗試"
18 
19 print "這個真正的數字是:5"

輸出結果:

 1 /usr/bin/python2.7 /home/zh/PycharmProjects/s12/day1/a.py
 2 請猜想數字:8
 3 你猜想的有點大了,請嘗試小點的數字
 4 請猜想數字:7
 5 你猜想的有點大了,請嘗試小點的數字
 6 請猜想數字:6
 7 你猜想的有點大了,請嘗試小點的數字
 8 不要灰心,此次只是運氣很差,請下次嘗試
 9 這個真正的數字是:5
10 
11 Process finished with exit code 0
1 /usr/bin/python2.7 /home/zh/PycharmProjects/s12/day1/a.py
2 請猜想數字:5
3 太棒了你猜對了
4 這個真正的數字是:5
5 
6 Process finished with exit code 0

 

while 循環

他的原理是:當條件爲真的時候運行,當條件爲假的時候中止!

沒有一個規定次數,不設置條件永遠循環下去。

1 #!/usr/bin/env python
2 #-*- coding:utf-8 -*-
3 import time
4 count = 0
5 while True:
6     count +=1
7     print "loop",count
8     time.sleep(3)
9 #這個循環3秒鐘自+1 ,後無線循環只要這個條件爲」真「,就無限循環下去
1 /usr/bin/python2.7 /home/zh/PycharmProjects/s12/day1/a.py
2 loop 1
3 loop 2
4 loop 3
5 loop 4
6 loop 5
無線循環下去

再看個例子:

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 import time
 5 
 6 cout = 0
 7 
 8 while cout < 3:
 9     cout += 1
10     print "zhenghao", cout
11     time.sleep(3)
12 
13     # 這個循環每3秒循環一次,當條件cout < 3的時候爲真(本身設置的條件),當cout 不小於3的時候爲假(false)中止。
1 /usr/bin/python2.7 /home/zh/PycharmProjects/s12/day1/a.py
2 zhenghao 1
3 zhenghao 2
4 zhenghao 3
5 
6 Process finished with exit code 0
 1 #!/usr/bin/env python
 2 #-*- coding:utf-8 -*-
 3 #
 4 import random
 5 rand_num = random.randrange(10)
 6 try_cout = 0
 7   
 8 while try_cout < 3:
 9     guess_num = int(raw_input("請輸入猜想的數字:"))
10     if guess_num > 10:
11         print "輸入的數字超出範圍了"
12         continue
13     if guess_num == rand_num:
14         print "哇!太棒了你猜對了"
15         break
16     elif guess_num < rand_num:
17         print "你猜的數字有點小了,請嘗試大點的數字"
18     else:
19         print "你猜的數字有點大了,請嘗試小點的數字"
20   
21     try_cout +=1
22 else:
23     print "不要灰心你,此次只是運氣很差,請下次嘗試"
24 print "這個真正的數字是:%d"  % rand_num
25 #當執行到guess_num> 10 若是你輸入的是大於10的數字那麼將會執行continue,就會跳出當前循環,沒有執行try_cout +=1 因此沒有計數!

注:continue 是跳出當前循環,break是跳出整個這一層循環!

 

 1  1 #coding=utf8
 2  2 n=1
 3  3 while n<=100:
 4  4     print(n)
 5  5     n+=1
 6  6 print('END')
 7  7 
 8  8 #break提早終止循環
 9  9 n=0
10 10 while n<=100:
11 11     if n>10: #當n爲11時終止循環
12 12         break
13 13     print(n)
14 14     n+=1
15 15 print('END')
16 16 
17 17 #continue跳出當前本次循環,繼續下一輪循環
18 18 n=0
19 19 while n<=8:
20 20     n += 1
21 21     if n%2==0: #n是偶數時,跳出本次循環,後面的print語句不執行
22 22         continue
23 23     print(n)
24 24 print('END')

 

 

 

有個需求,我想返回個人上層怎麼作,用標識位!以下面的例子:

 

1 #!/usr/bin/env python
2 #-*- coding:utf-8 -*-
3 #
4 while True:
5     print "我是第一層"
6     while True:
7         print "我是第二層"
8         while True:
9             print "我是第三層"

 

這就是個死循環,當執行到第三個循環的時候就無限循環,這裏有人回想,用break行不行,不行以下:

 1 #!/usr/bin/env python
 2 #-*- coding:utf-8 -*-
 3 #
 4 while True:
 5     print "我是第一層"
 6     break
 7     while True:
 8         print "我是第二層"
 9         break
10         while True:
11             print "我是第三層"
12             break

 這個的輸出結果:

1 /usr/bin/python2.7 /home/zh/PycharmProjects/s12/day1/a.py
2 我是第一層
3 
4 Process finished with exit code 0

就只執行了第一個循環就跳出,不咱們想要的效果,那就用到「標誌位」了,工做中也有不少地方用到他:

 1 #!/usr/bin/env python
 2 #-*- coding:utf-8 -*-
 3 #
 4 count = 0
 5 while True:
 6     print "我是第一層"
 7     jump_1_flag = False
 8     while True:
 9         print "我是第二層"
10         jump_2_flag = False
11         while True:
12             count += 1
13             print "我是第三層"     
14             if count > 3:
15                 jump_2_flag = True
16                 break
17         if jump_2_flag:
18             print "第三層跳到我這裏來了,我也要跳到第一層"
19             jump_1_flag = True
20             break
21           
22     if jump_1_flag:
23         print "第二層和第三層跳到第一層了,我也要跳"
24         break

執行結果:

 1 /usr/bin/python2.7 /home/zh/PycharmProjects/s12/day1/a.py
 2 我是第一層
 3 我是第二層
 4 我是第三層
 5 我是第三層
 6 我是第三層
 7 我是第三層
 8 第三層跳到我這裏來了,我也要跳到第一層
 9 第二層和第三層跳到第一層了,我也要跳
10 
11 Process finished with exit code 0

 

9、Pthon運算符

Python算術運算符:

操做符 描述符 例子
+ 加法 - 對操做符的兩側增長值 a + b = 30
- 減法 - 減去從左側操做數右側操做數 a - b = -10
* 乘法 - 相乘的運算符兩側的值 a * b = 200
/ 除 - 由右側操做數除以左側操做數 b / a = 2
% 模 - 由右側操做數和餘返回除以左側操做數 b % a = 0
** 指數- 執行對操做指數(冪)的計算 a**b = 10 的冪 20
// 地板除 - 操做數的除法,其中結果是將小數點後的位數被除去的商。 9//2 =  4 而 9.0//2.0 = 4.0
1 >>> a = 21>>> b = 10
2 >>> c = 0
3 >>> c = a + b ; print c
4 31>>> c = a -b ; print c11>>> c = a * b ; print c210
5 >>> c = c / b ; print c
6 21
7 >>> c = c % b ; print c
8 1

Python的比較操做符:

運算符 描述 示例
== 檢查,兩個操做數的值是否相等,若是是則條件變爲真。 (a == b) 不爲 true.
!= 檢查兩個操做數的值是否相等,若是值不相等,則條件變爲真。 (a != b) 爲 true.
<> 檢查兩個操做數的值是否相等,若是值不相等,則條件變爲真。 (a <> b) 爲 true。這個相似於 != 運算符
> 檢查左操做數的值是否大於右操做數的值,若是是,則條件成立。 (a > b) 不爲 true.
< 檢查左操做數的值是否小於右操做數的值,若是是,則條件成立。 (a < b) 爲 true.
>= 檢查左操做數的值是否大於或等於右操做數的值,若是是,則條件成立。 (a >= b) 不爲 true.
<= 檢查左操做數的值是否小於或等於右操做數的值,若是是,則條件成立。 (a <= b) 爲 true.
 
1 >>> a = 21>>> b = 10
2 >>> c = 0
3 >>> c = a + b ; print c
4 31>>> c = a -b ; print c11>>> c = a * b ; print c210
5 >>> c = c / b ; print c
6 21
7 >>> c = c % b ; print c
8 1

 

 Python賦值運算符:

運算符 描述 示例
= 簡單的賦值運算符,賦值從右側操做數左側操做數 c = a + b將指定的值 a + b 到  c
+= 加法AND賦值操做符,它增長了右操做數左操做數和結果賦給左操做數 c += a 至關於 c = c + a
-= 減AND賦值操做符,它減去右邊的操做數從左邊操做數,並將結果賦給左操做數 c -= a 至關於 c = c - a
*= 乘法AND賦值操做符,它乘以右邊的操做數與左操做數,並將結果賦給左操做數 c *= a 至關於 c = c * a
/= 除法AND賦值操做符,它把左操做數與正確的操做數,並將結果賦給左操做數 c /= a 至關於= c / a
%= 模量AND賦值操做符,它須要使用兩個操做數的模量和分配結果左操做數 c %= a is equivalent to c = c % a
**= 指數AND賦值運算符,執行指數(功率)計算操做符和賦值給左操做數 c **= a 至關於 c = c ** a
//= 地板除,並分配一個值,執行地板除對操做和賦值給左操做數 c //= a 至關於 c = c // a
1 >>> a = 21
2 >>> b = 10
3 >>> c = 0
4 >>>
5 >>> c = a +b
6 >>> c += a ; print c
7 52
8 >>> c += a is c = c + a

 

Python位運算符:

操做符 描述 示例
& 二進制和複製操做了一下,結果,若是它存在於兩個操做數。 (a & b) = 12 即 0000 1100
| 二進制或複製操做了一個比特,若是它存在一個操做數中。 (a | b) = 61 即 0011 1101
^ 二進制異或運算符的副本,若是它被設置在一個操做數而不是兩個比特。 (a ^ b) =  49 即  0011 0001
~ 二進制的補運算符是一元的,並有「翻轉」位的效果。 (~a ) =  -61 即 1100 0011以2的補碼形式因爲帶符號二進制數。
<< 二進位向左移位運算符。左操做數的值左移由右操做數指定的位數。 a << 2 = 240 即 1111 0000
>> 二進位向右移位運算符。左操做數的值是由右操做數指定的位數向右移動。 a >> 2 = 15 即 0000 1111

 

二進制換算成10進制網絡學過的東西回憶下:
128 64 32 16 8 4 2 1
二進制是8位的好比說:01001111    換成10進制的就是:1+2+4+8+64  和上面的對比取值
 1 二進制「與」計算:(1和1=1  0和任意都爲0)
 2 a = 10
 3 b = 49
 4 a&b
 5  
 6 10        0    0    0    0       1    0    1    0
 7 49        0    0    1    1       0    0    0    1
 8 =0        0    0    0    0       0    0    0    0
 9  
10  
11 二進制「或」計算:(遇1得1)
12 a|b
13 a = 60 # 60 = 0 0 1 1    1 1 0 0
14 b = 13 #13 =  0 0 0 0    1 1 0 1
15 =                     0 0 1 1    1 1 0 1   = 0+0+32+16+8+4+0+1 = 61
16                    
17  
18 二進制「異或」運算:(相同爲0,不一樣爲1)
19 a^b
20  
21 a = 60            # 60 = 0011 1100
22 b = 13            # 13 = 0000 1101
23                                   0011 0001  = 0+0+32+16+0+0+0+1=49
24  
25 二進制取反運算:(0置換爲1,1置換爲0)
26 ~a
27  a = 60            # 60 = 0011 1100
28 那麼  -a = 1100 0011     128 + 64 +2 +1 =         
29  
30 二進位向左、右移位運算符:
31 a=2 那麼 往左移1位就是4以下:
32 a<<1 =  4        ;         a>>1 = 1

 

Python邏輯運算符:

運算符 描述 示例
and 所謂邏輯與運算符。若是兩個操做數都是真的,那麼則條件成立。 (a and b) 爲 true.
or 所謂邏輯OR運算符。若是有兩個操做數都是非零而後再條件變爲真。 (a or b) 爲 true.
not 所謂邏輯非運算符。用於反轉操做數的邏輯狀態。若是一個條件爲真,則邏輯非運算符將返回false。

not(a and b) 爲 false.

 1 例子:
 2 and運算,都爲真時爲真
 3 >>> 9 > 8 and 9 < 10
 4 True
 5 >>> 9 > 8 and 9 > 10
 6 False
 7  
 8 or運算,有一個爲真的時候便可爲真
 9 >>> 9 > 8 or 9 > 10
10 True
11 >>> 9 < 8 or 9 > 10
12 False
13 >>>
14  
15 not運算,假爲真真爲假
16 >>> not 6.2 <= 6
17 True
18 >>> not 6.2 >= 6
19 False
20 >>>
相關文章
相關標籤/搜索