天天看點

Python 刷題記錄總結

Python endswith()

  1. 用于判斷字元串是否以指定字尾結尾,如果以指定字尾結尾傳回True,否則傳回False。可選參數"start"與"end"為檢索字元串的開始與結束位置
str.endswith(suffix[, start[, end]])      

參數

suffi:該參數可以是一個字元串或者是一個元素

start:字元串中的開始位置

end :字元中結束位置

傳回值

如果字元串含有指定的字尾傳回True,否則傳回False

eg:

str = "hello world!!!"
 
suffix = "ld!!!"
print(str.endswith(suffix))    # true
print(str.endswith(suffix,6))    #true
 
suffix = "or";
print(str.endswith(suffix, 2, 8))  #true
print str.endswith(suffix, 2, 10);  #false      

也就是說:

start預設是 0,即從第一個元素開始搜尋,end 預設是字元串/清單等的長度,表示結束搜尋的位置

除法運算
  1. 在 Python 2.x 中,/ 除法就跟我們熟悉的大多數語言 ,整數相除的結果是一個整數,把小數部分完全忽略掉,浮點數除法會保留小數點的部分得到一個浮點數的結果
  2. 在 Python 3.x 中 / 除法不再這麼做了,對于整數之間的相除,結果也會是浮點數

對于// python2和3是一樣的,截取整數可以借用math的方法:

import math
math.trunc(1 / 2)  #  0
math.trunc(-1 / 2)  #   0      

python變量傳遞

可變類型,值可以改變

  1. list,dict 為可變類型
  2. 可變類型,添加或者修改資料時,變量對應的記憶體位址不會改變。也就是可變類型,一直在引用原來的記憶體位址
  3. 如果是重新指派,記憶體位址就會發生改變。
  4. 而del變量名 則隻是删除一個指針,不删除變量。

不可變類型,值不可以改變:

  1. 數值類型int、long、bool、float,字元串str,元組tuple為不可變類型
  2. 不可變類型,一旦被重新指派,變量對應的記憶體位址就會發生改變

是以:

  1. 不可變類型的資料作為實參傳遞, 修改形參不影響實參
  2. 可變類型的資料作為實參傳遞, 修改形參會導緻實參跟着變化。但是形參指派不會改變實參

re.match

re.match 嘗試從字元串的起始位置比對一個模式,如果不是起始位置比對成功的話,match()就傳回none。

re.match(pattern, string, flags=0)      

第一個參數為正規表達式,第二個是字元串,第三個是标志位

搭配使用的是:group

eg:

import re
 
line = "Cats are smarter than dogs"
 
 # 以are為分割,有兩個比對分組。(.*)表示代表比對除換行符之外的所有字元
 #(.*?) 後面多個問号,代表非貪婪模式,也就是說隻比對符合條件的最少字元
matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)
 
if matchObj:
   print "matchObj.group() : ", matchObj.group()
   print "matchObj.group(1) : ", matchObj.group(1)
   print "matchObj.group(2) : ", matchObj.group(2)
else:
   print "No match!!"      

matchObj.group() 相當于 matchObj.group(0),表示比對到的完整文本字元

matchObj.group(1) 表示第一個比對分組比對到的結果

matchObj.group(2) 表示第二個比對分組比對的結果

Python socket

用 socket()函數來建立套接字,文法格式如下:

socket.socket([family[, type[, proto]]])      

eg:

server.py

import socket               # 導入 socket 子產品
 
s = socket.socket()         # 建立 socket 對象
host = socket.gethostname() # 擷取本地主機名
port = 12345                # 設定端口
s.bind((host, port))        # 綁定ip和端口
 
s.listen(5)                 # 監聽連接配接,最多連接配接5個
while True:
    c,addr = s.accept()     # 建立用戶端連接配接
    c.send('hello world')
    c.close()      

client.py

import socket               # 導入 socket 子產品
 
s = socket.socket()         # 建立 socket 對象
host = socket.gethostname() # 擷取本地主機名
port = 12345                # 設定端口号
 
s.connect((host, port))    #發起連接配接
print(s.recv(1024))     #列印收到的資料,最多1024位元組
s.close()      

小整數對象池

a = [1,2,3]
b = [1,2,4]
print(id(a[1]) == id(b[1))      

id:檢視記憶體位址

python對于小整數對象有一個小整數對象池,範圍在[-5,257]之間(不同軟體可能上限有差別)。對于在這個範圍的數,不會建立對象。

是以,以上代碼列印出的是true

字典
複數