Python學習總結


   Python是一種簡單易學,功能強大的編程語言,它有高效率的高層數據結構,能簡單而有效地實現面向對象編程。Python簡潔的語法和對動態輸入的支持,再加上解釋性語言的本質,使得它在大多數平台上的很多領域都是一個理想的腳本語言,特別適用於快速的應用程序開發。

     首先Python 語言是一門腳本語言。Python在設計上堅持了清晰划一的風格,簡潔優雅,沒有了大括號,沒有了分號,使得Python變得非常的整潔。而且它是一門易讀、易維護,可移植性非常好,可以在linux、windows、蘋果等多種操作系統上運行,並且被大量用戶所歡迎的、用途廣泛的語言。Python的作者有意的設計限制性很強的語法,使得不好的編程習慣(例如if語句的下一行不向右縮進)都不能通過編譯。這就是Python給我的有很嚴格的縮進規則的感覺。 

一、基本概念

  1. python中數有四種類型:整數、長整數、浮點數和復數。

  • 整數, 如 1
  • 長整數 是比較大的整數
  • 浮點數 如 1.23、3E-2
  • 復數 如 1 + 2j、 1.1 + 2.2j

  2. 字符串(字符的序列)

  • python中單引號和雙引號使用完全相同。
  • 使用三引號('''或""")可以指定一個多行字符串。
  • 轉義符 '\'
  • 自然字符串, 通過在字符串前加r或R。 如 r"this is a line with \n" 則\n會顯示,並不是換行。
  • python允許處理unicode字符串,加前綴u或U, 如 u"this is an unicode string"。
  • 字符串是不可變的。
  • 按字面意義級聯字符串,如"this " "is " "string"會被自動轉換為this is string。
  • 去空格及特殊符號
    s.strip().lstrip().rstrip(',')
    復制字符串
    #strcpy(sStr1,sStr2)
    sStr1 = 'strcpy'
    sStr2 = sStr1
    sStr1 = 'strcpy2'
    print sStr2
    連接字符串
    #strcat(sStr1,sStr2)
    sStr1 = 'strcat'
    sStr2 = 'append'
    sStr1 += sStr2
    print sStr1
    查找字符
    #strchr(sStr1,sStr2)
    # < 0 為未找到
    sStr1 = 'strchr'
    sStr2 = 's'
    nPos = sStr1.index(sStr2)
    print nPos
    比較字符串
    #strcmp(sStr1,sStr2)
    sStr1 = 'strchr'
    sStr2 = 'strch'
    print cmp(sStr1,sStr2)
    掃描字符串是否包含指定的字符
    #strspn(sStr1,sStr2)
    sStr1 = '12345678'
    sStr2 = '456'
    #sStr1 and chars both in sStr1 and sStr2
    print len(sStr1 and sStr2)
    字符串長度
    #strlen(sStr1)
    sStr1 = 'strlen'
    print len(sStr1)
    將字符串中的大小寫轉換
    #strlwr(sStr1)
    sStr1 = 'JCstrlwr'
    sStr1 = sStr1.upper()
    #sStr1 = sStr1.lower()
    print sStr1
    追加指定長度的字符串
    #strncat(sStr1,sStr2,n)
    sStr1 = '12345'
    sStr2 = 'abcdef'
    n = 3
    sStr1 += sStr2[0:n]
    print sStr1
    字符串指定長度比較
    #strncmp(sStr1,sStr2,n)
    sStr1 = '12345'
    sStr2 = '123bc'
    n = 3
    print cmp(sStr1[0:n],sStr2[0:n])
    復制指定長度的字符
    #strncpy(sStr1,sStr2,n)
    sStr1 = ''
    sStr2 = '12345'
    n = 3
    sStr1 = sStr2[0:n]
    print sStr1
    將字符串前n個字符替換為指定的字符
    #strnset(sStr1,ch,n)
    sStr1 = '12345'
    ch = 'r'
    n = 3
    sStr1 = n * ch + sStr1[3:]
    print sStr1
    掃描字符串
     
    #strpbrk(sStr1,sStr2)
    sStr1 = 'cekjgdklab'
    sStr2 = 'gka'
    nPos = -1
    for c in sStr1:
        if c in sStr2:
            nPos = sStr1.index(c)
            break
    print nPos
     
    翻轉字符串
    #strrev(sStr1)
    sStr1 = 'abcdefg'
    sStr1 = sStr1[::-1]
    print sStr1
    查找字符串
    #strstr(sStr1,sStr2)
    sStr1 = 'abcdefg'
    sStr2 = 'cde'
    print sStr1.find(sStr2)
    分割字符串
     
    #strtok(sStr1,sStr2)
    sStr1 = 'ab,cde,fgh,ijk'
    sStr2 = ','
    sStr1 = sStr1[sStr1.find(sStr2) + 1:]
    print sStr1
    #或者
    s = 'ab,cde,fgh,ijk'
    print(s.split(','))
     
    連接字符串
    delimiter = ','
    mylist = ['Brazil', 'Russia', 'India', 'China']
    print delimiter.join(mylist)
    PHP 中 addslashes 的實現
     
    def addslashes(s):
        d = {'"':'\\"', "'":"\\'", "\0":"\\\0", "\\":"\\\\"}
        return ''.join(d.get(c, c) for c in s)
     
    s = "John 'Johny' Doe (a.k.a. \"Super Joe\")\\\0"
    print s
    print addslashes(s)
     
    只顯示字母與數字
     
    def OnlyCharNum(s,oth=''):
        s2 = s.lower();
        fomart = 'abcdefghijklmnopqrstuvwxyz0123456789'
        for c in s2:
            if not c in fomart:
                s = s.replace(c,'');
        return s;
     
    print(OnlyStr("a000 aa-b"))
     
     
    
    截取字符串
     
    str = ’0123456789′
    print str[0:3] #截取第一位到第三位的字符
    print str[:] #截取字符串的全部字符
    print str[6:] #截取第七個字符到結尾
    print str[:-3] #截取從頭開始到倒數第三個字符之前
    print str[2] #截取第三個字符
    print str[-1] #截取倒數第一個字符
    print str[::-1] #創造一個與原字符串順序相反的字符串
    print str[-3:-1] #截取倒數第三位與倒數第一位之前的字符
    print str[-3:] #截取倒數第三位到結尾

     

  3. 標識符的命名

  • 第一個字符必須是字母表中字母或下划線'_'。
  • 標識符的其他的部分有字母、數字和下划線組成。
  • 標識符對大小寫敏感。

  4. 對象

    python程序中用到的任何“東西”都成為“對象”。

  5. 邏輯行和物理行

    物理行是我們在編寫程序時看到的,邏輯行則是python看到的。

    python中分號;標識一個邏輯行的結束,但是實際中一般每個物理行只寫一個邏輯行,可以避免使用分號。

    多個物理行中可以寫一個邏輯行,如下:

1 s = "peter is \
2 writing this article"
3     上面\的使用被稱為‘明確的行連接’, 又如:
4 
5 print \
6 (peter)

6. 縮進

    空白在python是非常重要的,行首的空白是最重要的,又稱為縮進。行首的空白(空格和制表符)用來決定邏輯行的縮進層次,從而決定語句

  分組。這意味着同一層次的語句必須有相同的縮進,每一組這樣的語句稱為一個塊。

  注意:不要混合使用空格和制表符來縮進,因為在跨越不同的平台時無法正常工作。

二、運算符與表達式

  Python 許多運算符,表達式和java 編程語言的運算符和表達式使用方法相同,所以下面就簡單的介紹幾個常用的運算符和表達式的使用方法:

 

x = 5
y = 3
a = 4
b = 2
print(x + y) #結果為 7
print(x - y)  #結果為2
print(x * y) #結果為15
print(x / y)  #結果為1.6666666666666667 不同的機器浮點數的結果可能不同
print(x // y) #向下去整結果為1
print(x % y) #兩數相除取余結果為2
print(x**y) #5的3次冪結果為125

print(a / b) #結果為浮點數2.0
print(a % b)#取余結果為0
print(a // b)#取整結果為2

 

 

a = 4
b = 2
c = 2
print(a == b) #False
print(a != b)  #True
print(a <> b)  #True
print(a > b)   #True
print(a < b)   #False
print(a >= b) #True
print(c <= b) #True
a = 4
b = 2
c = 0
print(a>b and b>c) #a>b為True繼續計算b>c,b>c也為True則結果為True
print(a>b and b<c)#a>b為True繼續計算c<b,b>c結果為False則結果為False
print(a>b or c<b) #a>b為True則不繼續計算c<b,結果為True
print(not c<b) #c<b為True not True結果為False
print(not a<b) #a<b為False not Flase結果為True

 

3. python 控制台輸出 使用print

print (abc)    #打印abc並換行
print (“abc%s”%“d”)   #打印abcd
print(“abc%sef%s”%“d”,“g”) "abc%sef%s" % ("d", "g")    #打印abcdefg

三、控制流

  1. if 語句

 i = 10
n = int(raw_input("enter a number:"))

if n == i:
    print (equal)
elif n < i:
    print (lower)
else:
    print (height)

2. while語句

while True:
    pass
else:
    pass
#else語句可選,當while為False時,else語句被執行。 pass是空語句。

3. for 循環 for..in

for i in range(0, 5):
    print i
else:
    pass
# 打印0到4

注:當for循環結束后執行else語句;

    range(a, b)返回一個序列,從a開始到b為止,但不包括b,range默認步長為1,可以指定步長,range(0,10,2);

4. break語句

    終止循環語句,如果從for或while中終止,任何對應循環的else將執行。

  5. continue語句

    continue語句用來調過當前循環的剩余語句,然后繼續下一輪循環。

四、函數

  函數通過def定義。def關鍵字后跟函數的標識符名稱,然后跟一對圓括號,括號之內可以包含一些變量名,該行以冒號結尾;接下來是一塊語句,即函數體。

def sumOf(a, b):
    return a + b

 1. 函數形參

    函數中的參數名稱為‘形參’,調用函數時傳遞的值為‘實參’

  2. 局部變量

    在函數內定義的變量與函數外具有相同名稱的其他變量沒有任何關系,即變量名稱對於函數來說是局部的。這稱為變量的作用域。

    global語句, 為定義在函數外的變量賦值時使用global語句。

def func():
    global x
def func(a, b=2, c=3):
    print "a is %s, b is %s, c is %s" % (a, b, c)

func(1) #a is 1, b is 2, c is 3
func(1, 5) #a is 1, b is 5, c is 3
func(1, c = 10) #a is 1, b is 2, c is 10
func(c = 20, a = 30) #a is 30, b is 2, c is 20
 
         

 


    print "x is ", x
    x = 1

x = 3
func()
print x

#3
#1

3. 默認參數

    通過使用默認參數可以使函數的一些參數是‘可選的’。

def say(msg, times =  1):
    print msg * times

say("peter")
say("peter", 3)

4. 關鍵參數

    如果某個函數有很多參數,而現在只想指定其中的部分,那么可以通過命名為這些參數賦值(稱為‘關鍵參數’)。

    優點:不必擔心參數的順序,使函數變的更加簡單;假設其他參數都有默認值,可以只給我們想要的那些參數賦值。

六、數據結構

  python有三種內建的數據結構:列表、元組和字典。

  1. 列表

    list是處理一組有序項目的數據結構,列表是可變的數據結構。列表的項目包含在方括號[]中,eg: [1, 2, 3], 空列表[]。判斷列表中是否包含某項可以使用in, 比如 l = [1, 2, 3]; print 1 in l; #True;支持索引和切片操作;索引時若超出范圍,則IndexError;使用函數len()查看長度;使用del可以刪除列表中的項,eg: del l[0] # 如果超出范圍,則IndexError

list函數如下:

l = [1, 2, 2]
l.append(3) #[1, 2, 2, 3]

 

l = [1, 2, 2]
print l.count(2) # 2
l = [1, 2, 2]

l.insert(1, 100)
print l #[1, 100, 2, 2]

l.insert(100, 1000)
print l #[1, 100, 2, 2, 1000]

2. 元組

    tuple和list十分相似,但是tuple是不可變的,即不能修改tuple,元組通過圓括號中用逗號分割的項定義;支持索引和切片操作;可以使用 in

  查看一個元素是否在tuple中。空元組();只含有一個元素的元組("a",) #需要加個逗號

    優點:tuple比list速度快;對不需要修改的數據進行‘寫保護’,可以是代碼更安全

    tuple與list可以相互轉換,使用內置的函數list()和tuple()。

l = [1, 2, 3]
print l # [1, 2, 3]

t = tuple(l)
print t # (1, 2, 3)

l1 = list(t)
print l1 #[1, 2, 3]

元組最通常的用法是用在打印語句,如下例:

name = "Peter Zhang"
age = 25
print Name: %s; Age: %d"% (name, age) # Name: Peter Zhang; Age: 25
t = (1, 2, 3, 1, 2, 3)

print t.count(2) # 2

index(value, [start, [stop]])  ---返回列表中第一個出現的值為value的索引,如果沒有,則異常 ValueError

t = (1, 2, 3, 1, 2, 3)

print t.index(3) # 2
try:
    print t.index(4)
except ValueError, ve:
    print (there is no 4 in tuple  # there is no 4 in tuple

 3. 字典

    字典由鍵值對組成,鍵必須是唯一的;eg: d = {key1:value1, key2:value2};空字典用{}表示;字典中的鍵值對是沒有順序的,如果想要

  一個特定的順序,那么使用前需要對它們排序;d[key] = value,如果字典中已有key,則為其賦值為value,否則添加新的鍵值對key/value;使

  用del d[key] 可以刪除鍵值對;判斷字典中是否有某鍵,可以使用in 或 not in;

d = {}
d["1"] = "one"
d["2"] = "two"
d["3"] = "three"

del d["3"]

for key, value in d.items():
    print "%s --> %s" % (key, value)
#1 --> one
#2 --> two
 dict函數如下:

    clear()  ---刪除字典中所有元素

d1 = {"1":"one", "2":"two"}
d1.clear()

print d1 # {}
d1 = {"1":"one", "2":"two"}
d2 = d1.copy()

print d2 #{'1': 'one', '2': 'two'}

copy()  ---返回字典的一個副本(淺復制)

dict.fromkeys(seq,val=None) ---創建並返回一個新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對應的初始值(默認為None)

l = [1, 2, 3]
t = (1, 2, 3)

d3 = {}.fromkeys(l)
print d3 #{1: None, 2: None, 3: None}

d4 = {}.fromkeys(t, "default")
print d4 #{1: 'default', 2: 'default', 3: 'default'}

get(key,[default])  ---返回字典dict中鍵key對應值,如果字典中不存在此鍵,則返回default 的值(default默認值為None)

d5 = {1:"one", 2:"two", 3:"three"}

print d5.get(1) #one
print d5.get(5) #None
print d5.get(5, "test") #test

has_key(key)  ---判斷字典中是否有鍵key

d6 = {1:"one", 2:"two", 3:"three"}

print d6.has_key(1)  #True
print d6.has_key(5)  #False

 4. 序列

    序列類型是指容器內的元素從0開始的索引順序訪問,一次可以訪問一個或者多個元素;列表、元組和字符串都是序列;序列的兩個主要特點是

  索引操作符和切片操作符;索引可以得到特定元素;切片可以得到部分序列;

numbers = ["zero", "one", "two", "three", "four"]

print numbers[1] # one
print numbers[-1] # four
#print numbers[5] # raise IndexError

print numbers[:] # ['zero', 'one', 'two', 'three', 'four']
print numbers[3:] # ['three', 'four']
print numbers[:2] # ['zero', 'one']
print numbers[2:4] # ['two', 'three']
print numbers[1:-1] # ['one', 'two', 'three']

 切片操作符中的第一個數(冒號之前)表示切片開始的位置,第二個數(冒號之后)表示切片到哪里結束。 如果不指定第一個數,Python就從

  序列首開始。如果沒有指定第二個數,則Python會停止在序列尾。 注意,返回的序列從開始位置 開始 ,剛好在結束位置之前 結束。即開始位置是

  包含在序列切片中的,而結束位置被排斥在切片外。 可以用負數做切片。負數用在從序列尾開始計算的位置。

       由於學習Python的時間很短,對於Python的一些語法和使用方法還不是很熟練,對於Python的基礎知識點的理解還不是很好,希望可以在以后的日子再 好好學習Python!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM