python菜鳥基礎筆記(1)

2020-08-12 12:55:39
一、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)