Python編程快速上手——讓繁瑣工作自動化學習筆記


第一部分 基本語法

1、字符串不能直接和數字相加,要用str()轉一下;但是可以和數字相乘,用於表示多個字符串復制;字符串不能和浮點數直接結合,字符串可以和字符串直接相加;

2、輸入函數用input(),默認是字符串 計算字符串長度用len()

3、注釋用#

4、類型轉換,int()整型,str()字符串類型,float()浮點類型

5、**是求指數值 //是整除 /是除法

6、判斷變量類型,type(變量)

第二部分 控制流

1、not 非 and 與 or 或

2、range(開始,結束,步長)  注意:循環不包括‘結束’ 

3、import 函數 導入函數 from import是另一種導入形式,舉例 from random import * 可以在使用random函數時不用加random.前綴

4、sys.exit()提前結束程序,需要import sys

第三部分 函數

1、def 函數名(入參):

2、關鍵字 print('hello',end='') 連接字符 print('cats','dogs','mice',sep=',')用 ','代替‘ ’

3、要想在函數中修改全局變量,需要在全局變量前加上global關鍵字

4、異常處理 try 和except

常用的異常類型

 1 1、NameError:嘗試訪問一個未申明的變量
 2 >>>  v
 3 NameError: name 'v' is not defined
 4 
 5 2、ZeroDivisionError:除數為0
 6 >>> v = 1/0
 7 ZeroDivisionError: int division or modulo by zero
 8 
 9 3、SyntaxError:語法錯誤
10 >>> int int
11 SyntaxError: invalid syntax (<pyshell#14>, line 1)
12 
13 4、IndexError:索引超出范圍
14 >>> List = [2]
15 >>> List[3]
16 Traceback (most recent call last):
17   File "<pyshell#18>", line 1, in <module>
18        List[3]
19 IndexError: list index out of range
20 
21 5、KeyError:字典關鍵字不存在
22 >>> Dic = {'1':'yes', '2':'no'}
23 >>> Dic['3']
24 Traceback (most recent call last):
25   File "<pyshell#20>", line 1, in <module>
26         Dic['3']
27 KeyError: '3'
28 
29 6、IOError:輸入輸出錯誤
30 >>> f = open('abc')
31 IOError: [Errno 2] No such file or directory: 'abc'
32 
33 7、AttributeError:訪問未知對象屬性
34 >>> class Worker:
35  def Work():
36       print("I am working")
37 >>> w = Worker()
38 >>> w.a
39 Traceback (most recent call last):
40   File "<pyshell#51>", line 1, in <module>
41         w.a
42 AttributeError: 'Worker' object has no attribute 'a'
43 
44 8、ValueError:數值錯誤
45 >>> int('d')
46 Traceback (most recent call last):
47   File "<pyshell#54>", line 1, in <module>
48         int('d')
49 ValueError: invalid literal for int() with base 10: 'd'
50 
51 9、TypeError:類型錯誤
52 >>> iStr = '22'
53 >>> iVal = 22
54 >>> obj = iStr + iVal;
55 Traceback (most recent call last):
56      File "<pyshell#68>", line 1, in <module>
57        obj = iStr + iVal;
58 TypeError: Can't convert 'int' object to str implicitly
59 
60 10、AssertionError:斷言錯誤
61 >>> assert 1 != 1
62 Traceback (most recent call last):
63      File "<pyshell#70>", line 1, in <module>
64         assert 1 != 1
65 AssertionError
View Code

第四部分 列表

1、負數下標

整數-1下標指的是列表的最后一個下標,-2指的是列表的倒數第二個下標

2、利用切片取得子列表

  spam[1:4]表示取得spam[1]到spam[3]的區間值作為一個新的切片,可以使用省略方法

  spam[:4]表示取得spam[0]到spam[3]的區間值作為一個新的切片,省略的值取得是0

  spam[1:]表示取得spam[1]到spam最后一個元素的區間值作為一個新的切片,省略的值取得是列表的長度

3、列表的長度

  使用len(spam)

4、列表可以向數組那樣進行賦值

5、列表的連接和復制

  使用+可以連接兩個連接為一個列表

  使用['a','b','c']*n可以復制n個列表為一個列表

6、列表元素的刪除

  del spam[3]

7、列表的判斷

1 in 'howdy' in ['hello','howdy']
2 >> True
3 not in
4 >> False

 

8、多重賦值

1 cat = ['fat','black','loud']
2 size,color,disposition = cat

  等號左側的變量數目和列表長度必須嚴格相等,否則會報ValueError

9、增強賦值

  類似於C中+=,*=,/=,-=,%=

  增強賦值同樣可以用於列表中,作用等於於對以元素為單位的操作

10、方法

  類似於C++中類的成員方法

 1     spam.index('hello') 取出'hello'在列表中的下標索引,重復值返回第一次出現的下標索引
 2 
 3     spam.append('yes') 在列表尾部追加一個元素
 4 
 5     spam.insert(1,'no') 在指定spam[1]之前插入一個元素
 6 
 7     spam.remove('hello') 刪除指定元素,如果有多個重復元素存在,刪除第一個元素,后面的元素不刪除。
 8 
 9     spam.sort() 對數字按照由小到大排列,對字符串按照ASCII字符順序排列
10 
11     spam.sort(reverse=True) 對字符串按照ASCII字符順序逆序排列,對數字按照由大到小排列
12 
13     spam.sort(key=str.lower) 對表項全部按照小寫字母進行排列
14 
15     spam.sort(1,2,3,'hello','no') -----WRONG,不能對既有數字又有字符串的列表進行排序,因為不知道按照那個原則進行排序

11、續行字符'\',在行末使用

12、可變對象和不可變對對象

  可變即內存空間可變,不可變即內存空間不可變。可變的對象的變量在傳遞時,傳遞的是引用地址(可以理解為指針),所以拷貝的時候不是真正拷貝內存空間,僅僅是多了個變量指向相同的內存空間而已。對新的變量進行增刪都會影響到原始變量,即淺拷貝。不可變對象,拷貝或通過新變量傳遞時,一旦發生修改,會新生成一個跟原來對象屬於不同內存空間的新對象值。元組(tuple)、數值型(number)、字符串(string)均屬於不可變對象,而字典型(dictionary)和列表型(list)的對象是可變對象。

13、引用

  在變量必須保存可變數據類型的值時,例如列表或字典,Python就使用引用。對於不可變的數據類型的值,例如字符串、整型或元組,Python變量就保存值本身。

14、傳遞引用

  當函數被調用時,參數的值被復制給變元。對於列表和字典,這意味着變元得到的是引用的拷貝。

15、copy模塊的copy()和deepcopy()函數

  使用copy.copy()來避免引用傳遞帶來的麻煩,如果被復制的列表或字典中包含列表或字典,使用copy.deepcopy()

1 import copy
2 samp = ['A', 'B', 'C', 'D']
3 cheese = copy.copy(samp)
4 cheese[1] = 42
5 print(samp)

 16、列表和字符串的共同點

  列表和字符串都可以傳入len(),都有下標和切片,用於for循環,連接或復制,並與in和not in操作符一起使用。

第五部分 元組

1、元組使用()進行區別,以逗號','作為最后一個截止,否則只有一個元素時有可能會不被認為是元組類型

2、列表和元組之間的類型轉換 使用list() tuple()進行類型轉換

3、列表和元組的區別

  列表是可以修改的,他們可以添加值、刪除值和修改值。元組是不可以修改的,他們根本不能改變。而且元組使用的是括號,而列表使用的方括號。

第六部分 字典和結構化數據

1、字典是許多值的結合,但不像列表的下標,字典的索引可以使用許多不同的數據類型,不只是整數。字典的索引被稱為“鍵”,鍵及其關聯的值稱為“鍵-值”對,字典使用花括號{}包裹。

2、字典與列表

  字典也可以使用數字作為鍵;不像列表,字典中的表項時不排序的。相同的兩個列表其順序也必須是一樣的,而字典則未必;因為字典是不排序的,所以不能進行列表那樣的切片操作。

3、字典的查找和添加

  查找鍵值是否位於字典中,可是使用in操作,字典鍵值對的添加可是使用普通的賦值操作進行。

  檢查該鍵是否存在於字典中,也可使用get()方法,其有兩個參數,第一個是取得其鍵的值,第二個是如果查找鍵失敗,返回的默認值

4、字典方法

  keys()方法------取出字典鍵

  values()方法----取出字典值

  items()方法-----取出字典鍵值對

 1 spam = {'color': 'red', 'age': '42'}
 2 for i in spam.keys():
 3     print(i)
 4 for i in spam.values():
 5     print(i)
 6 for i in spam.items():
 7     print(i)
 8 
 9 
10 age
11 color
12 42
13 red
14 ('age', '42')
15 ('color', 'red')
Python dictionary

  可以將keys()和values()返回的值存儲為列表,例如list(spam.keys())

  也可以使用多重賦值的技巧,在for循環中將key和value對號入座

1 for k, v in spam.items():
2     print('key:' + k + 'value:' + str(v))

  setdefault()方法---設置字典鍵對應的默認值

  如果沒有默認值,將方法設置的值設置成功,如果已有默認值,則保持原狀。

   spam.setdefault('color', 'black') 

 5、漂亮打印

  使用 import pprint 可以按照字典的樣式打印出來,例如 pprint.pprint(myDict) ,如果想將打印的結果轉為字符串而不是直接輸出在屏幕上可以使用 print(pprint.pformat(myDict)) 

6、字典實戰——棋盤井字游戲

 1 theBoard = {'top-L': ' ', 'top-M': ' ', 'top-R': ' ',
 2             'mid-L': ' ', 'mid-M': ' ', 'mid-R': ' ',
 3             'low-L': ' ', 'low-M': ' ', 'low-R': ' '}
 4 def showBoard(board):
 5     print(board['top-L'] + '|' + board['top-M'] + '|' + board['top-R'])
 6     print('-+-+-')
 7     print(board['mid-L'] + '|' + board['mid-M'] + '|' + board['mid-R'])
 8     print('-+-+-')
 9     print(board['low-L'] + '|' + board['low-M'] + '|' + board['low-R'])
10 
11 
12 turn = 'X'
13 for i in range(9):
14     showBoard(theBoard)
15     print('the turn for' + turn + 'move in which space ?')
16     move = input()
17     theBoard[move] = turn
18     if turn == 'X':
19         turn = 'O'
20     else:
21         turn = 'X'
22 showBoard(theBoard)
井字游戲

 7、字典作為一種數據類型,可以字典有嵌套字典

第七部分 字符串操作

1、字符串字面量

  雙引號“that's a cat ”:雙引號同樣可以表示字符串,並且在雙引號中添加單引號作純字符串使用;

  轉移字符‘\’:轉移字符可以講單引號轉為普通字符,從而可以避免引起語義錯誤;

  原始字符串r‘abc’:原始字符串任務‘’中的所有字符都是字符串的一部分,例如‘that is carol\'s cat ’中的轉移字符‘\’也被認為是字符串的一部分從而打印為 that is carol\'s cat 

  三重引號''':使用print打印多行字符串時,可以使用三重分號將字符串打印出來,例如

 print('''Dear Alice, 
I like you very much ..... ''') 

Dear Alice, 
I like you very much ..... 

  多行注釋:代碼中使用 '''Python''' 和 """Python""" 都可以起到注釋代碼的作用

  字符串下標切片:字符串可以像列表一樣使用下標切片取出部分字符串,但是並沒有改變原來的字符串,只是新建了一個字符串,例如

 1 sapm = 'hello world'
 2 >>>spam[0]
 3 'H'
 4 >>>spam[4]
 5 'o'
 6 >>>spam[-1]
 7 'd'
 8 >>>spam[0:5]
 9 'hello'
10 >>>spam[:5]
11 'hello'
12 >>>spam[6:]
13 'world'

  字符串in和not in操作符:可以使用in或者not in判斷一個字符串是否在另一個字符串中存在,返回值為布爾型。

2、字符串方法

  字符串方法upper()、lower()、isupper()、islower():

  isX字符串方法:

  isalpha()返回TRUE,如果字符串只包含字母,並且非空;

  isalnum()返回TRUE,如果字符串值包含字母和數字,並且非空;

  isdecimal()返回TRUE,如果字符串包含數字字符,並且非空;

  isspace()返回TRUE,如果字符串值包含空格,制表符和換行,並且非空;

  istitle()返回TRUE,如果字符串僅包含以大寫字母開頭后面都是小寫字母的單詞;

  字符串方法startswith()、endswith():

  字符串方法join()、split():

  join()連接字符串 

>>','.joini['my','name','is']
>>my,name,is

  split()分離字符串

1 >>'myABCnameABCisABC'.split('ABC')
2 >>['my','name','is']
3 
4 >>'My name is '.split('m')
5 >>['My na','e is']

  split('\n')以換行進行分割字符串

  字符串對齊方法rjust()、ljust()、center():

  左右對齊和居中,其中第二個參數是填充參數,可以選擇填充字符;

  字符串刪除空白字符方法strip()、rstrip()、lstrip():

  刪除兩邊,右邊和左邊的空白字符,第二個參數啟用時指定需要刪除的指定字符串

  字符串拷貝粘貼方法pyperclip():

1 '''
2   該模塊需要單獨安裝  
3 '''
4 >>import pyperclip
5 >>pyperclip.copy('Hello World!')
6 >>pyperclip.paste()
7 >>'Hello World!'

 


免責聲明!

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



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