天天看點

python基礎知識

python除了生孩子,什麼都會。作為解釋型語言,不需要像java一樣編譯。

支援三種類型:數字、字元串、運算表達式

print(1,"hello world",1+2)

用于輸出特殊符号:\\    \'     \"

用于輸出特殊功能:\n 換行  \r 回車  \t 水準制表符   \b 退一格    new line 、return、table、blank  

不希望轉義符起作用

print(r"hello\nworld")

python預設十進制輸出

print(chr(0b 100))

print(ord("4"))

import keyword

print(keyword.kwlist)

變量包括三部分:辨別、類型、值     id  type value

name="瑪麗亞"

print(id(name),type(name),name)

變量指向新的空間,舊的變量成為記憶體垃圾

name="sandy"

print(name)

包括四種:整數、浮點數、布爾、字元串   int  float  bool  str

int:正數、負數、0

      整數可以表示二進制、八進制、十進制、十六進制     0b 0o    預設  0x

float:浮點數存儲存在不精确的問題,這是由于二進制底層問題造成

     print(1.1+2.2)  →  3.300000003

     解決方案:導入decimal子產品

     from decimal import decimal

     print(decimal("1.1")+decimal("2.2"))  →  3.3

bool類型中true 取值為1   false 取值為0

     print(true+false)  →  1

str字元串類型   單引号''   雙引号" "    三引号'''  '''     """   """

友善不同類型資料的拼接

name="張三"

age=10

print("我叫"+name+",今年"+str(age)+"歲。")

單行注釋   #

多行注釋  一對三引号

中文編碼說明

#coding:gbk                     #coding:utf-8

在檔案開頭附上,可以用記事本另存為檢視編碼格式

11.輸入函數input()

a=int(input("輸入a:"))

b=int(input("輸入b:"))

print(a+b) 

運算符包括:算數運算符、指派運算符、比較運算符、布爾運算符、位運算符

算數運算符: + - *  /    整數//    取餘%  幂**

    print(9//-4,-9//4)  →  -3   -3 

    print(9%-4,-9%4)  →  -3  3

指派運算符:鍊式指派、參數指派、解包指派

    a=b=c=20

    a+=1

    a,b,c=1,2,3      

        交換變量:a,b,c=c,b,a  →  3,2,1

比較運算符:type=bool

    比較value:>   <   ==   !=   >=  <= 

    比較id:  is    is not

布爾運算符:and  or  not    in   not in

    print("w" in  "hello world")

位運算符:

    0000 0100  →  4

    0000 1000  →  8

    位與 &   print(4&8) → 0

    位或 |   print(4|8) → 12

    左移位運算 <<   print(4<<1) 4左移一位,相當于乘以2的1次方

    右移位運算 >>   print(4>>1) 4右移一位,相當于除以2的1次方

算術運算符→位運算符→比較運算符→布爾運算符

包括:順序結構、選擇結構、循環結構

選擇結構:單分支結構、雙分支結構、多分支結構

   格式:if   if..else:..     if..elif..elif..else:

   條件表達式:true  if 條件  else  false

       print("y" if a!=1 else "n") 

循環結構:①while ②for-in

   while遵循四個條件:初始化變量-條件判斷-執行指令-改變變量

       a=1

       while a <=10:

       print(a)

       a+=1

   for a in range(1,11):

   常見練習:計算1-100内偶數之和、計算100-999之間的水仙花數有哪幾個、列印99乘法表      

擷取對象的布爾值,使用内置函數bool(),以下對象的布爾值為0:

   false 0  none  空字元串  空清單list()/[]  空元組tuple()/()  空字典dict()/{}   空集合set()

充當占位符,在搭建文法結構還沒有想好怎麼寫的時候可以用

range(stop)預設0開始stop-1結束.步長為1

range(start,stop) [start,stop)步長為1

range(start,stop,step)  [start,stop)步長為step

   r=range(1,10,2)

   print(r) →  [1,3,5,7,9]

break:直接退出循環

   常見練習:輸入三次銀行卡密碼

continue:結束目前循環,進入下一循環。可以了解為執行非條件體内容

建立方式:[]  或者 使用内置函數list() 或者 清單生成式

    lst=[1,2,3,4]   lst=list([1,2,3,4])  lst=[i for i in range(1,5)]

    清單的特點:清單元素按順序排列;索引映射唯一資料;可以存儲重複資料;任意類型混存;根據需要動态配置設定和回收記憶體

    查詢:.index() 輸出的是數值所對應的索引

        print(lst.index(1)) ==  print(lst.index(-3)) → 2

    切片:

        print(lst[1:3]) → [2,3]

        print(lst[::2]) → [1,3]

        print(lst[::-1]) → [4,3,2,1]

     判斷:

        in  not in  

     元素周遊:for i  in lst:

     增加:

        單一進制素 .append()

        多元素.extend()  或者 切片替換

        任意位置插入一個元素 .insert()

        lst2=[1:2:3:4]

        lst[0]=lst2

     删除:

        .remove(元素) 一次删除一個元素

        .pop(索引)删除指定索引位置上的元素

        切片替換

        .clear()清空清單

        del lst  删除清單對象

元素排序

   兩種方法:①.sort()方法 ②内置函數sorted()

   lst.sort(reverse=false)  false或不寫,元素升序排列;true降序

   print(lst)               

   print(sorted(lst,reverse=true))

字典以鍵值對的方式存儲資料,字典是一個無序的序列

字典原理是,根據key查找value所在位置,這裡的key經過hash轉化,是以要求key為不可變序列

字典特點:字典元素都是鍵值對,key不允許重複;字典元素是無序的;字典中key必須是不可變對象;字典可以根據需求動态伸縮;字典會浪費較大記憶體,是一種空間

        換時間的資料結構。

   建立方式:

      socre={'king':100,'sandy':90,'lily':89}

      score=dict({'king':100,'sandy':90,'lily':89})  

      score={name:scores  for name,scores in zip(name,scores)}生成式 name=['king','sandy','lily'] soores=[100,90,89]

      利用内置函數zip() 将對應元素打包成一個元組,然後傳回元組組成清單

   元素擷取:[]  或 .get()

      print(score['king'])     查找不到抛出keyerror

      print(score.get('king')) 查找不到不會報錯,可以指定傳回值。  score.get('kiki',-1)

   判斷元素存在與否:  in  not in

   增加元素: score['jacky']=99

   更改元素:  score['king']=92

   删除元素:  del score['king']

   清空元素:  score.clear()

擷取字典試圖的三個方法:

   .keys()     擷取所有key,輸出類型為dict_keys['king','sandy','lily']

   .values()   擷取所有values,輸出類型為dict_values[100,90,89]

   .items()    擷取所有key,value鍵值對,輸出類型為dict_items([('king',100),('sandy',90),('lily',89)])

   将keys、values轉成清單格式:  print(list(score.keys))

字典元素周遊:

   for key in scores:

       print(key,score[key]) 或 print(key,socre.get(key))

元組是python内置資料結構之一,是一個不可變序列。沒有增删改操作

為什麼将元組設計成不可變序列:

   在多任務環境下,同時操作同一對象時不需要加鎖;在程式中盡量使用不可變序列

   ①() 或者 省略

      tup=('python','hello',90)  或 tup='python','hello',90

      隻有一個元素時候

      tup=('python',) 此處,不能省略,省略後輸出類型為str

   ②内置函數tuple()

      tup=tuple( ('python','hello',90)  )

   元組不能增删改,但内部元素資料可以

      tup=('python','hello',90,[1,2])

      tup[3].append(100)

      print(tup) → ('python','hello',90,[1,2,100])

集合是内置資料結構,與清單、字典一樣屬于可變類型的序列;集合是沒有value的字典。

    建立方式:

       {}或 set()

       s={'python','hello',90} 、s=set({'python','hello',90})

       空集合print(set()) 不然會和空字典混淆

       集合生成式:s={i for i in range(1,5)} 要求元素具有疊代特征

    清單、元組、字元串轉換成集合:

       print( set(lst) )  → {1,2,3,4}

       print( set(('python','hello',90)) ) → {'python','hello',90}

       print( set("python") )  → {'p','h','y','t','o','n'}

    判斷:  in  not in

    新增:

       單個元素: .add()  s.add(80)

       多個元素: .update()  s.update([1,2,3,4])、s.update({1,2,3,4})、s.update((1,2,3,4))

    删除:

       .remove(key) 一次删除一個元素,不存在keyerror

       .discard()   一次删除一個元素,不存在不抛出異常

       .pop()       随機删除任意一個元素,不可指定參數。與清單差別

       .clear()     清空集合

集合之間的關系判斷:輸出結果為true false

   ==   !=    

   a.issubset(b)    a是b的子集   

   a.issuperset(b)  a是b的超集

   a.isdisjoint(b)  a和b存在交集

集合運算:

   .intersection()  &  交集

   .union()         |  并集

   .difference()    -  差集

   .symmetric_difference() ^  對稱并集

      s1={1,2,3,4}  s2={2,3,5,6}

      print(s1.intersection(s2)) → {2,3}    print(s1 & s2)

      print(s1.union(s2)) →  {1,2,3,4,5,6}  print(s1 | s2)

      print(s1.difference(s2)) →  {1,4}  print(s1 - s2)

      print(s1.symmetric_difference(s2)) → {1,4,5,6}  print(s1 ^ s2)

tiele 3

font:courier new