一 數據類型:
列表類型:
定義:
在[]內,能夠存放多個任意類型的值,並以逗號隔開。
通常用於存放學生的愛好,課堂的週期等等...
優先掌握的操做:
一、按索引存取值(正向存取+反向存取):便可存也能夠取
二、切片(顧頭不顧尾,步長)
三、長度
四、成員運算in和not in
五、追加
六、刪除
七、循環
須要掌握的:
一、index
二、count
三、pop
四、remove
五、insert
六、extend
元組類型:
定義:
在()內,能夠存放多個任意類型的值,並以逗號隔開。
注意:
元組與列表不同的是,只能在定義時初始化值,不能對其進行修改。
優勢:
在內存中佔用的資源比列表要小。
# 定義一個學生列表,可存放多個學生 list(['錢垚', '李小龍', '張全蛋', '趙鐵柱']) students = ['錢垚', '李小龍', '張全蛋', '趙鐵柱'] print(students[1]) # 李小龍 # student_info = ['楊波', 84, 'male', ['泡8', '喝9']] # # 取楊波同窗的全部愛好 print(student_info[3]) # # # 取楊波同窗的第二個愛好 print(student_info[3][1]) # # # 優先掌握的操做: # # 一、按索引存取值(正向存取+反向存取):便可存也能夠取 print(student_info[-2]) # 楊波 # # # 二、切片(顧頭不顧尾,步長) print(student_info[0:4:2]) # ['楊波', 'male'] # # # 三、長度 print(len(student_info)) # 4 # # # 四、成員運算in和not in print('楊波' in student_info) # True print('楊波' not in student_info) # False # # # 五、追加 student_info = ['楊波', 84, 'male', ['泡8', '喝9']] # 在student_info列表末尾追加一個值 student_info.append('安徽最牛的學員,合肥學院') print(student_info) # # # 六、刪除 # # 刪除列表中索引爲2的值 del student_info[2] print(student_info) # 七、循環 for student in student_info: print(student) # 須要掌握的: student_info = ['尹浩卿', 95, 'female', ['尬舞', '喊麥'], 95] # 1.index 獲取列表中某個值的索引 print(student_info.index(95)) # 1 # 2.count 獲取列表中某個值的數量 print(student_info.count(95)) # 2 # 3.取值,默認取列表中最後一個值,相似刪除 # 若pop()括號中寫了索引,則取索引對應的值 student_info.pop() print(student_info) # 取出列表中索引爲2的值,並賦值給sex變量名 sex = student_info.pop(2) print(sex) print(student_info) # student_info = ['尹浩卿', 95, 'female', ['尬舞', '喊麥'], 95] # 4.移除,把列表中的某個值的第一個值移除 student_info.remove(95) print(student_info) # ['尹浩卿', 'female', ['尬舞', '喊麥'], 95] name = student_info.remove('尹浩卿') print(name) # None print(student_info) # ['female', ['尬舞', '喊麥'], 95] # 5.插入值 student_info = ['尹浩卿', 95, 'female', ['尬舞', '喊麥'], 95] # # 在student_info中,索引爲3的位置插入「合肥學院」 # student_info.insert(3, '合肥學院') # print(student_info) # 6.extend 合併列表 student_info1 = ['尹浩卿', 95, 'female', ['尬舞1', '喊麥2'], 95] student_info2 = ['婁逸夫', 94, 'female', ['尬舞1', '喊麥2']] # 把student_info2全部的值插入student_info1內 student_info1.extend(student_info2) print(student_info1)
元組:
# 定義: # tuple((1, 2, 3, '五', '六')) tuple1 = (1, 2, 3, '五', '六') print(tuple1) # (1, 2, 3, '五', '六') # 優先掌握的操做: # 一、按索引取值(正向取+反向取):只能取 print(tuple1[2]) # 3 # 二、切片(顧頭不顧尾,步長) # 從0開始切片到5-1, 步長爲3 print(tuple1[0:5:3]) # (1, '五') # 三、長度 print(len(tuple1)) # 5 # 四、成員運算in和not in print(1 in tuple1) # True print(1 not in tuple1) # False # 五、循環 for line in tuple1: # print(line) # print默認end參數是\n print(line, end='_')
字典類型:
做用:
在{}內,可存放多個值,以key-value存取,取值速度快。
定義:
key必須是不可變類型,value能夠是任意類型
dict1 = dict({'age': 18, 'name': 'tank'}) dict1 = {'age': 18, 'name': 'tank'} print(dict1) # {'age': 18, 'name': 'tank'} print(type(dict1)) # <class 'dict'> # # 取值,字典名 + [],括號內寫值對應的key print(dict1['age']) # # 優先掌握的操做: # 一、按key存取值:可存可取 # 存一個 level: 9的值到dict1字典中 dict1['level'] = 9 print(dict1) # {'age': 18, 'name': 'tank', 'level': 9} print(dict1['name']) # tank # 二、長度len # 三、成員運算in和not in 只判斷字典中的key print('name' in dict1) # True print('tank' in dict1) # False print('tank' not in dict1) # True # 四、刪除 del dict1['level'] print(dict1) # {'age': 18, 'name': 'tank'} # 五、鍵keys(),值values(),鍵值對items() # 獲得字典中全部key print(dict1.keys()) # 獲得字典中全部值values print(dict1.values()) # 獲得字典中全部items print(dict1.items()) # # 六、循環 # 循環遍歷字典中全部的key for key in dict1: print(key) print(dict1[key]) # get # dict1 = {'age': 18, 'name': 'tank'} print(dict1.get('age')) # []取值 print(dict1['sex']) # KeyError: 'sex' # get取值 print(dict1.get('sex')) # None # 若找不到sex,爲其設置一個默認值 print(dict1.get('sex', 'male'))
不可變類型: 變量的值修改後,內存地址必定不同。 數字類型 int float 字符串類型 # str # # 元組類型 # tuple # # 可變類型: # 列表類型 # list # # 字典類型 # dict # # ''' # # 不可變類型 # int number = 100 print(id(number)) # 1434810944 number = 111 print(id(number)) # 1434811296 # float sal = 1.0 print(id(sal)) # 2771339842064 sal = 2.0 print(id(sal)) # 2771339841896 str1 = 'hello python!' print(id(str1)) # 1975751484528 str2 = str1.replace('hello', 'like') print(id(str2)) # 1975751484400 # 可變類型: # 列表 list1 = [1, 2, 3] list2 = list1 list1.append(4) # list1與list2指向的是同一分內存地址 print(id(list1)) print(id(list2)) print(list1) print(list2)
二 流程控制:
if 判斷:
語法:
if 判斷條件:
# 若條件成立,則執行此處代碼
邏輯代碼
elif 判斷條件:
# 若條件成立,則執行此處代碼
邏輯代碼
else:
# 若以上判斷都不成立,則執行此處代碼
邏輯代碼
while循環
語法:
while 條件判斷:
# 成立執行此處
邏輯代碼
break # 跳出本層循環
continue # 結束本次循環,進入下一次循環
# 判斷兩數大小 x = 10 y = 20 z = 30 # 縮進快捷鍵,tab往右移動四個空格,shift + tab 往左移動四個空格 if x > y: print(x) elif z > y: print(z) else: print(y) ''' while循環 語法: while 條件判斷: # 成立執行此處 邏輯代碼 break # 跳出本層循環 continue # 結束本次循環,進入下一次循環 ''' # str1 = 'tank' # # # while循環 # while True: # name = input('請輸入猜想的字符: ').strip() # if name == 'tank': # print('tank success!') # break # # print('請從新輸入! ') # 限制循環次數 str1 = 'tank' # 初始值 num = 0 # 0 1 2 3 # while循環 while num < 3: name = input('請輸入猜想的字符: ').strip() if name == 'tank': print('tank success!') break print('請從新輸入!') num += 1
三 文件處理:
open()
寫文件
wt: 寫文本
讀文件
rt: 讀文本
追加寫文件
at: 追加文本
注意: 必須指定字符編碼,以什麼方式寫
就得以什麼方式打開。 如: utf-8
執行python文件的過程:
1.先啓動python解釋器,加載到內存中。
2.把寫好的python文件加載到解釋器中。
3.檢測python語法,執行代碼。
SyntaxError: 語法錯誤!
打開文件會產生兩種資源:
1.python程序
2.操做系統打開文件
文件處理之上下文管理:
一、with能夠管理open打開的文件,
會在with執行完畢後自動調用close()關閉文件
with open()
二、with能夠管理多個文件
# 寫文本文件 # 參數一: 文件的絕對路徑 # 參數二: mode 操做文件的模式 # 參數三: encoding 指定的字符編碼 f = open('file.txt', mode='wt', encoding='utf-8') f.write('tank') f.close() # 關閉操做系統文件資源 # 讀文本文件 r == rt f = open('file.txt', 'r', encoding='utf-8') print(f.read()) f.close() # # # # 追加寫文本文件 a = open('file.txt', 'a', encoding='utf-8') a.write('\n 合肥學院') a.close() ''' 文件處理之 上下文管理. with open() as f "句柄" ''' # 寫 with open('file1.txt', 'w', encoding='utf-8') as f: f.write('墨菲定律') # # 讀 with open('file1.txt', 'r', encoding='utf-8') as f: res = f.read() print(res) # # # 追加 with open('file1.txt', 'a', encoding='utf-8') as f: f.write('圍城') # f.close() ''' 對圖片、音頻、視頻讀寫 rb模式,讀取二進制,不須要指定字符編碼 ''' # 讀取相片cxk.jpg with open('cxk.jpg', 'rb') as f: res = f.read() print(res) jpg = res # 把cxk.jpg的二進制流寫入cxk_copy.jpg文件中 with open('cxk_copy1.jpg', 'wb') as f_w: f_w.write(jpg) ''' with 管理多個文件 ''' # 經過with來管理open打開的兩個文件句柄f_r,f_w with open('cxk.jpg', 'rb') as f_r, open('cxk_copy2.jpg', 'wb') as f_w: # 經過f_r句柄把圖片的二進制流讀取出來 res = f_r.read() # 經過f_w句柄把圖片的二進制流寫入cxk_copy.jpg文件中 f_w.write(res)
四 函數
什麼是函數?
函數指的其實一把工具。
使用函數的好處:
1.解決代碼冗餘問題。
2.使代碼的結構更清晰。
3.易管理。
函數的使用必須遵循: 先定義,後調用。
函數定義語法:
def 函數名(參數1, 參數2...):
'''註釋: 聲明函數'''
邏輯代碼
return 返回值
def: defind 定義。
函數名: 必須看其名知其意。
(): 接收外部傳入的參數。
註釋: 用來聲明函數的做用。
return: 返回給調用者的值。
函數調用: 函數名 + () 調用 ''' # # 1.無參函數 def login(): user = input('請輸入用戶名').strip() pwd = input('請輸入密碼').strip() if user == 'tank' and pwd == '123': print('login successful!') else: print('login error!') # # # # 函數的內存地址 print(login) # # # # 函數調用 login() # 2.有參函數 # username,password 用來接收外部傳入的值 def login(username, password): user = input('請輸入用戶名').strip() pwd = input('請輸入密碼').strip() if user == username and pwd == password: print('login successful!') else: print('login error!') # # 函數調用 # # 若函數在定義時須要接收參數,調用者必須爲其穿傳參 login('tank', '123') # 3.空函數 ''' ATM: 1.登陸 2.註冊 3.提現 4.取款 5.轉帳 6.還款 ''' # # 登陸功能 # def login(): # # 表明什麼都不作 # pass # # # # 註冊功能 # def register(): # # 表明什麼都不作 # pass # # # # 還款功能 # def repay(): # pass # ... ''' 函數的參數: ''' # 在定義階段: x, y稱之爲形參。 def func(x, y): # x, y print(x, y) # # 在調用階段: 10, 100 稱之爲實參。 func(10, 100) # ''' # 位置參數: # 位置形參 # 位置實參 # 必須按照位置一一傳參。 # ''' # # 在定義階段: 位置形參 def func(x, y): # x, y print(x, y) # # # # # 在調用階段: 10, 100 稱位置實參。 func(10, 100) # 10 100 # # ''' # 關鍵字參數: # 關鍵字實參 # 按照關鍵字傳參。 # ''' # # 位置形參x, y def func(x, y): print(x, y) # # # 在調用階段: x=10, y=100稱之爲關鍵字參數。 func(y=111, x=10) # 10 111 # 不能少傳 func(y=111) # 報錯TypeError # 不能多傳 func(y=111, x=222, z='333') # 報錯TypeError ''' 默認參數: 在定義階段,爲參數設置默認值 ''' def foo(x=10, y=20): print(x, y) # # # 不傳參,則使用默認參數 foo() # # # 傳參,使用傳入的參數 foo(200, 300)
''' 函數的嵌套定義: 在函數內部定義函數。 函數對象: 函數的內存地址稱之爲函數對象。 函數的名稱空間: 內置: python解析器自帶的都稱之爲"內置名稱空間"。 全局: 全部頂着頭寫的變量、函數...都稱之爲"全名稱空間"。 局部: 在函數內部定義的,都稱之爲"局部名稱空間"。 名稱空間加載順序: 內置 ---> 全局 ---> 局部 名稱空間查找順序: 局部 ---> 全局 ---> 內置 ''' # 函數的嵌套定義 def func1(): print('from func1...') def func2(): print('from func2...') # 函數對象 print(func1) def f1(): pass def f2(): pass dic1 = {'1': f1, '2': f2} choice = input('請選擇功能編號: ') if choice == '1': print(dic1[choice]) dic1[choice]() elif choice == '2': print(dic1[choice]) dic1[choice]() x = 10 # 名稱空間 # 函數的嵌套定義 def func1(): # x = 20 print('from func1...') print(x) # 報錯 x = 30 def func2(): print('from func2...') func1()
總結:今日內容比較多,也是python的基礎。明日就開始講爬蟲了,還有點小期待呢!python