一、python--解釋型(開發過程中沒有了編譯)、互動式(提示符後直接執行程式碼)、物件導向的指令碼語言
1.特點--易於學習、易於維護、易於閱讀、豐富的庫、可移植、可延伸(可以使用c語言完成部分程式碼,然後在py程式中呼叫)、GUI程式設計、可嵌入(可以嵌入到C/C++程式)
2.缺點:執行速度慢
3.主要運用領域:
雲端計算(openstack)、web開發、科學計算與人工智慧、系統操作和維護、金融、圖形GUI
4.windows下
a、直譯器執行
b、互動式執行
c、指令碼程式設計執行
安裝環境設定 path
開發工具--emacs \pythonwin \sublime text
IDE整合開發環境-- pycharm
二、語法基礎
1.
:代替了 { }
print 代替了 printf
單行註釋 #
多行註釋 '''
斷行語句 return \ (反斜槓斷尾)
false
輸入函數 input('please input a string:')
name=input('please input a string:') //給name賦值
輸出函數 print(3,name) //輸出兩數之間以空格間隔
print(3,name,sep=',') //輸出兩數之間以逗號間隔
print(3,name,end=' ') //輸出完成之後沒有任何符號
print(3,name,end=' '); print(3,name) //輸出結果爲 3 john3 john
print預設輸出是換行的
如果要實現不換行輸出則需要在變數末尾加上end=" " print(x,end=" ")
2.import 與from ...import 匯入相應模組
3.變數不需要宣告,每個變數在使用前都必須賦值,賦值後纔會被建立
允許同時爲多個變數賦值 a=b=c=1 a,b,c=1,2,'hello'
4.標準數據型別:Number String Tuple List Set Dictionary
分別爲 數位 字串 元組 列表 集合 字典
其中前三個爲不可變數據,後三個爲可變數據
5.Number數位型別--int整型(表示爲長整型)、bool、float、complex(複數)
6.type( )函數可以用來查詢變數所指的物件型別
isinstance()函數也可以判斷
二者的區別:
type不會認爲子類是一種父類別型別
isintance會認爲子類是一種父類別型別
7.del語句刪除物件的參照
8.數值的除法 / 返回浮點數 // 返回整數(//得到的並不一定是整數型別的數,它與分母分子的數據型別有關係) 例如,7.0//2 3.0 7//2.0 3.0
9.字串String
py中單引號和雙引號使用完全相同
用+連線,*重複字串
字串兩種索引方式 從左到右以0開始,從右到左 以-1開始(遵循左閉右開原則,a[0:2] 只包括第一二個字元,第三個字元不包括)
字串值不能改變
10.LIst 列表--[ ]表示 列表中的元素型別可以不同,可以巢狀,索引,擷取
列表中元素的值可以改變
列表的擷取可以接收三個參數
11.Tuple 元組--元素不能修改 寫在小括號裡( ) 元素型別可以不同
構造包含0個或1個元素的元組比較特殊:tup1=() #空元組 tup2=(20,) #一個元素,需要在元素後新增逗號
12.Set集合--由1個或數個形態各異的大小整體組成的,構成集合的事物或物件稱作元素或成員。基本功能是進行成員關係測試和刪除重複元素。
可以使用大括號{ }或者set()函數建立集合
其中建立一個空集合必須使用set()
13.Dictionary字典--用大括號 { } 標識,無序的 鍵:值 集合
列表是有序得物件集合,字典是無序的物件集合。兩者之間的區別在於:字典中的元素是通過鍵來存取的,而不是通過偏移存取。
鍵必須使用不可變型別。在同一個字典中,鍵必須是唯一的。
建立空字典用{ }
集合與字典都可以使用大括號來標識,注意區分空集合與空字典的表示方式
14.數據型別轉換--將數據型別作爲函數名 例如,a=1.0,int(a)
三、深入學習語法
1.運算子--算術、比較(關係)、賦值、邏輯、位、成員、身份運算子
算術運算子 ** 冪次方 // 取整除
賦值運算子 := 海象運算子,可在表達式內部爲變數賦值
位運算子 &與(兩個相應位都爲1時結果爲1,其餘爲0)
| 或(兩個相應位有一個爲1結果爲1)
^互斥或(兩個對應位相異時結果爲1)
~取反 << 左移動 >>右移動
邏輯運算子 and 布爾與(x and y 若x爲false則返回false,否則返回y的計算值)
or 布爾或(x or y 若x是true則返回x的值,否則返回y的值)
not 布爾非(x not y若x爲true則返回false,若x爲false則返回true)
成員運算子 in(在指定序列中找到值則返回true)
not in(在指定序列中沒有找到值返回true)
身份運算子 is(判斷兩個識別符號是否參照自一個物件,若參照的是同一個物件則返回true)
is not(判斷兩個識別符號是否參照自不同對象,若參照的不是同一個物件則返回true)
id()函數用於獲取物件記憶體地址
is與==區別:is用於判斷兩個變數參照物件是否爲同一個,==用於判斷參照變數的值是否相等。
運算子的優先順序 and>or/not is/is not>in/not in>not/and/or
2.數位NUMBER
在互動模式中,最後被輸出的表達式結果被賦值給變數 _
常用的數學函數
abs()/fabs() 返回絕對值
pow(x,y) 返回x**y運算後的值
round(x,n) 返回浮點數x的四捨五入的值,若給出n值,則代表舍入到小數點後的位數。
sqrt()返回數位x 的平方根
亂數函數
random() 隨機生成下一個實數,在[0,1)範圍內
三角函數
數學常數 pi e
3.字串STRING
原始字串:所有的字串都直接按照字面意思來使用。在第一個引號前加上字母R/r。
% 格式字串
三引號--允許一個字串跨多行,字串中可以包含換行符、製表符以及其他特殊字元。
f-string格式化字元以f開頭,後面跟着字串,字串中的表達式用大括號{ }包起來,它會將變數或表達式計算後的值替換進去,例如:
w={「name」:""ruboob", "ur1":"www.ruboob.com" }
f"{w["name"]}:{w["ur1"]}"
輸出:"ruboob:www.ruboob.com"
特點:用該方式不用再去判斷使用%s還是%d
在python3中所有的字串都是Unicode字串,該字串儲存爲16位元unicode字串,能夠表示更多的字元集,使用語法是在字串前面加上字首u
字串內建函數
4.列表LIST
序列是python中最基本的數據結構。序列中的每個元素都分配一個數字-它的位置,或索引,第一個索引是0,python有6個序列的內建型別,但最常見的是列表和元組。
序列都可以進行的操作有索引、切片、加、乘、檢查成員。
len([1,2,3]) #輸出列表長度 3
for x in [1,2,3]: print(x,end="") #迭代 1 2 3
列表支援擷取與拼接、重複、刪除、更新、巢狀等操作
列表函數:len( )\max( )\min( )\list( ) #將元組轉換爲列表
列表方法:list.append( ) #在列表末尾新增新的物件
list.count( ) #統計某個元素在列表中出現的次數
list.extend( ) #在列表末尾一次性追加另一個序列中的多個值
list.index( ) #匹配項索引位置
list.insert( ) #插入
list.remove( ) #移除列表中某個值的第一個匹配項
list.pop( ) #移除列表中的一個元素(預設最後一個元素),並且返回該元素的值
list.reverse( ) #反向
list.sort( ) #排序
list.clear( ) #清空列表
list.copy( ) #複製列表
5.元組TUPLE
元組支援連線、刪除、索引、擷取,但不可修改。
元組函數:len( )\max( )\min( )\tuple( ) #將可迭代系列轉換爲元組
元組不可變指的是元組所指向的記憶體中的內容不可變
6.字典DICTIONARY--支援推導式
字典可儲存任意型別物件,是一種可變容器模型。
值可以取任何數據型別,鍵必須是不可變的(可以用數位、字串、元組充當鍵,但不能用列表,列表是可變的)
存取字典裡的值:
dict={'name':ruboob,'age':18}
print("name=",dict['name']) #將對應的鍵值放到方括號中
字典支援修改、刪除等操作
字典函數:len( ) #j計算鍵的總數
str( ) #輸出字典,以可以列印的字串表示
type( ) #返回輸入的變數型別
字典方法:
radiansdict.clear( )
......
遍歷技巧:
在遍歷時,關鍵字和對應的值可以使用items()方法同時解讀出來
索引位置和對應的值可以使用enumerate()函數同時得到
同時遍歷兩個或更多的序列,可以使用zip()方法
反向遍歷一個序列,首先指定這個序列,然後呼叫reversed()函數
要按序遍歷一個序列,使用sorted()函數返回一個已排序的序列,並不修改原值
7.集合SET--基本功能包括關係測試和消除重複元素,支援推導式
無序的不重複元素序列
具有去重功能(輸出時自動去掉重複的元素)
**注意集合的運算**
類似列表推導式,集合支援集合推導式:
>>>a = {x for x in 'abracadabra' if x not in 'abc'}
>>> a
{'r', 'd'}
集合的基本操作--
新增元素 s.add(x) #將元素x新增到集合s中,若元素已存在,則不進行任何操作。
s.update(x) #也可以新增元素,且參數可以是列表、元組等,x可以有多個,用逗號分開。
移除元素 s.remove(x) #將x從集合s中移除,若元素不存在則會發生錯誤。
s.discard(x) #移除x,若元素不存在,不會發生錯誤。
s.pop() #隨機刪除集閤中的一個元素,該方法會對集合進行無序排序,然後將這個無序排序集合的左邊第一個元素進行刪除。
計算個數 len(s)
清空集合 s.clear()
判斷元素是否存在 x in s
集合內建方法
add() clear() difference() intersection()....
補充點
關鍵字end可以用於將結果輸出到同一行,或者輸出的末尾新增不同的字元
a, b = 0, 1
while b < 1000:
print(b, end=',')
a, b = b, a+b
輸出結果:
1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,、
8.條件控制 if-elif-else 每個條件後面使用冒號:
python中沒有switch-case語句
python使用縮排方式來表示程式碼的層次結構(縮排可以使用任意數量的空格,但通常使用4個空格)
9.回圈語句 每個條件後面使用冒號:
while
for
python中沒有do..while
設定無限回圈--通過設定條件表達式永遠不爲false來實現,使用ctrl+c 退出當前無限回圈。
while回圈--while..else
for .... in....可以遍歷任何序列的專案,如一個列表或者一個字串
break語句用於跳出當前回圈體,countinue跳出當前回圈塊中剩餘語句,進行下一輪回圈。
若明確的知道回圈執行的次數或者要對一個容器進行迭代,推薦使用for...in..回圈。
若要構造不知道具體回圈次數的回圈結構,推薦使用while回圈。
languages=['C','C++','python']
for x in languages:
print(x)