Python 基礎入門學習
- 基本陳述句
- 基本資料型別
- 函式
- 檔案操作
- 面向物件
- 例外
- 模塊
一.基本陳述句
-
注釋:
#單行注釋"""多行注釋""" -
print (" ")輸出函式 -
基本運算子:
+-*///(取整)%(取余)**(冪運算) -
變數的定義:
變數名 = 值(每個變數使用前都必須賦值,變數在賦值以后才會被創造,定義時不需要指定變數型別) -
type( )查看變數型別函式 -
input( )變數輸入函式 用法舉例: a = input(“輸入數字:”) 輸入的任何內容的資料型別默認為字符型str -
int(a)float(b)型別轉換函式,將a轉換為int型,將b轉換為float型 -
格式化輸出:
print("格式化字串" % 變數1)print("格式化字串" % (變數1,變數2...))(%s - 字串)
(%d - 帶符號十進制整數——%06d表示輸出六位數,不足地方用0補全)
(%f - 浮點數——%.02f表示小數點后顯示兩位)
(%% - 輸出%)
-
f-格式化字串: print(f’ My name is {name} ')
-
轉義字符:
\n換行\t制表符 : 1個tab鍵(4個空格) -
結束符:python中的 print 默認以
\n為結束符,即默認換行,但可自己設定,如:print('hello', end="\t") -
識別符號 由字母、數字、下劃線組成,不能以數字開頭,不能與關鍵詞重名,識別符號區分大小寫,命名規則推薦多個單詞時全部小寫并將每個單詞用下劃線隔開,
-
if陳述句: 在Python開發中,Tab和空格一定不能混用!
if 條件1: 條件1成立時要執行的代碼 elif 條件2: 條件2成立時要執行的代碼 else: 條件1、2都不成立時執行的代碼 -
if陳述句訓練:猜拳游戲
#if-elif-else訓練: 猜拳游戲 import random player = int(input('請出拳 (0-拳頭 1-剪刀 2-布):')) computer = random.randint(0,2) #平局 if player == computer: print('平局') #電腦勝 elif ( ((player == 0) and (computer == 2)) or ((player == 1)and(computer == 0)) or ((player == 2)and(computer == 1)) ): print('電腦贏了!你個睿智!你連電腦都打不過!') #玩家勝 else: print('你贏了!不容易不容易啊!') -
亂數的實作:
匯入
random模塊,使用randint(隨機整數) 功 如:import random num = random.randint(0,2)? (num為0、1、2中的隨機一個數)
-
三目運算子:
條件成立時的運算式 if 條件 else 條件不成立時的運算式如:
MaxNum = a if a>b else b -
While 回圈:
while 條件: 條件成立時重復執行的代碼注意: 計數的初始值習慣寫為0
-
break 和 continue :
break為終止回圈,即不再回圈continue為退出當前一次回圈而直接執行下一次回圈,即跳入下一次回圈 -
for 回圈:
for 臨時變數 in 序列: 重復執行的代碼 -
while 與 else : 如果回圈由 break 停止,則else下的代碼不執行,for 與 else 的用法與此類似
while 條件: 條件成立時重復執行的代碼 else: 回圈正常結束之后執行的代碼
二.基本資料型別
-
字串可以用單引號、雙引號、三引號括起來,字串為不可變型別,
-
python中每個字串自帶下標和索引,可用
str[x]來精確訪問字串 str 中的某個字符 -
切片: 指對 字串、串列、元組 進行截取其中一部分的操作
語法: 序列[開始位置下標 : 結束位置下標 : 步長]
其中切片不包含結束位置下標對應的資料 ,即開始位置下標和結束位置下標為 [ ) 的包含形式
下標 和 步長 均可不寫或寫負數,步長默認為1,若下標開始到結束的方向與步長的方向沖突,則無法選取出資料
-
字串的查找: find() 、index() 、count() 、rfind() 、rindex()
find(): 檢測某個子串是否包含在這個字串中,如果存在則回傳這個子串開始位置的下標,否則回傳-1字串序列.find( 子串 , 開始位置下標 , 結束位置下標 )開始和結束位置下標可以省略,表示在整個字串序列中查找
index(): 與find()函式的用法一樣,但如果不存在要查找的子串,則會報錯count():回傳某子串在該字串中出現的次數,若不存在則回傳0rfind()與rindex()查找方向為從右側開始,其功能與 find() 與 index() 相同 -
字串的替換 :replace() 替換
字串序列.replace ( 舊子串、新子串、替換次數 )注意: replace函式并不會改變原有字串的資料,修改后的資料是replace函式的回傳值
-
字串的分割: split() 分割,回傳一個串列,丟失分割字符
字串序列.split(分割字符,分割次數)注意:split函式也不會改變原有字串資料,修改后的資料為函式回傳值
-
串列的合并:join() 合并,回傳一個字串,添加連接字符
連接字串.join(多字串組成的串列)注意: join() 合并 是 split() 分割 的逆序操作
-
字串修改大小寫函式:
capitalize()將字串第一個字母轉換為大寫,其余均為小寫title()將字串中每個單詞的首字母轉化成大寫,其余均為小寫lower()將字串中的大寫全部轉換為小寫upper()將字串中的小寫全部轉換為大寫例:
initial: brotheR aNd me
capitalize: Brother and me
title: Brother And Me
lower: brother and me
upper: BROTHER AND ME -
字串洗掉空白字符函式:
lstrip(): 洗掉字串左側空白字符rstrip(): 洗掉字串右側空白字符strip(): 洗掉字串兩側空白字符例:
initial: " brother and me "
lstrip: “brother and me "
rstrip: " brother and me”
strip: “brother and me” -
字串對齊函式: ljust() 、 rjust() 、center()
回傳 一個原字串 左/右/中 對齊,并用指定字符(默認空格)填充至對應長度的新字串
字串序列.ljust( 長度 , 填充字符 ) 字串序列.rjust( 長度 , 填充字符 ) 字串序列.center( 長度 , 填充字符 )例:
initial: brother and me
ljust: brother and me----------------
rjust: ----------------brother and me
center: --------brother and me-------- -
字串判斷開頭或結尾函式:
startswith(): 檢查字串是否以指定子串開頭,是則回傳True,否則回傳False,如果設定開始和結束位置下標,則在指定范圍內檢查字串序列.startswith(子串,開始位置下標,結束位置下標)endswith(): 檢查字串是否以指定子串結尾,用法與 startswith()相同字串序列.endswith(子串,開始位置下標,結束位置下標) -
字串字符型別判斷函式:
isalpha(): 如果字串非空且只包含字母則回傳True , 否則回傳Falseisdigit(): 如果字串非空且只包含數字則回傳True , 否則回傳Falseisalnum(): 如果字串非空且只包含數字或字母則回傳True, 否則回傳Falseisspace(): 如果字串非空且只包含空格則回傳True , 否則回傳False -
串列 : 可以用下標選取指定資料,串列為可變型別,
-
串列資料查找函式:
index(): 回傳指定資料所在位置的下標,若資料不存在則報錯串列序列.index(資料, 開始位置下標, 結束位置下標)count(): 回傳指定資料在該串列出現的次數,若資料不存在則回傳0串列序列.count(資料)len(): 回傳串列的長度,即串列中資料的個數len(串列序列) -
判斷串列中是否存在指定資料:
in: 判斷指定資料在某個序列的存在,存在回傳True,否則回傳False'指定資料' in 串列序列not in: 與 in 的用法相同,回傳結果相反 -
串列資料增加函式:
append(): 串列結尾追加資料,若資料為一個序列,則直接追加整個序列到串列的結尾位置串列序列.append(資料)extend(): 串列結尾追加資料,若資料為一個序列,則將序列的資料逐一添加到串列,若資料為字串,則將單獨的每個字符逐一添加到串列串列序列.extend(資料)insert(): 指定位置新增資料,增添方式與 append() 相同串列序列.insert(位置下表,資料) -
串列資料洗掉函式:
del 目標(串列名 或 串列指定下標資料)pop(): 洗掉指定下標的資料(默認為最后一個),并回傳該資料,串列序列.pop(下標)remove(): 移除串列中某個資料的第一個匹配項,若匹配失敗則報錯串列序列.remove(資料)clear(): 清空串列中的所有資料串列序列.clear() -
串列資料修改函式:
修改指定下標資料: 串列序列[下標] = 資料
reverse(): 將串列資料的順序逆置串列序列.reverse()sort(): 對串列的資料進行排序串列序列.sort( key = None, reverse = False)注意: reverse = True 降序 reverse = False 升序(默認)
-
串列資料復制函式:
copy(): 串列資料復制新串列序列 = 原串列序列.copy()即將原串列的資料復制到新串列中
-
串列的回圈遍歷:
while回圈方法 :
i = 0 while i < len(list): print(list[i]) i += 1for回圈方法 :
for i in list: print(i) -
串列嵌套:指一個串列里包含了其他的子串列,
例:
List = [ ['a' , 'b' , 'c'] , ['1' , '2' , '3'] , ['&' , '$' , '%'] ] -
串列綜合訓練:
#將8位老師隨機分配到3個辦公室中 import random teacher = ['a1','a2','a3','a4','a5','a6','a7','a8'] room = [[],[],[]] for i in teacher: n = random.randint(0,2) room[n].append(i) print(room) i = 1 for r in room: print(f'辦公室{i}的人數是{len(r)},他們分別為:',end = '\t') for name in r: print(name,end = '\t') print() i += 1 -
元組: 一個元組可以存盤多個資料(與串列相同),但元組內的資料是不能修改的,
元組名 (資料1 , 資料2 , 資料3)
注意: 如果定義的元組只有一個資料,那么需要添加逗號,湊則資料型別為該資料型別,而不是 元組(tuple) 資料型別,如 tuple = (‘x’ , )
-
元組的常見操作:
按下標查找資料 : 如tuple1[0] 、 tuple1[1]等
index(): 查找某個資料,用法與字串、串列的index相同count(): 統計某個資料在當前元組出現的次數len(): 統計元組中的資料個數 -
元組資料的修改:
元組內的直接資料如果修改則立即報錯
如果元組里面有串列,可直接修改串列內的資料,如 (‘abc’ , ‘qwe’ , [‘123’ , ‘456’ , ‘789’] , ‘jkl’) 元組就可以修改其中的 ‘123’ , ‘456’ , ‘789’ 資料
-
字典:字典里的資料是以鍵值對形式存盤的,字典為可變型別,
特點: 符號為大括號,資料為鍵值對形式出現,各個鍵值對之間用逗號隔開,
dict1 = { '鍵1' : '值1' , '鍵2' : '值2' , '鍵3' : '值3' }空字典除了可以用空大括號創建,也可以用函式創建: dict2 = dict()
-
字典常見操作:
增 / 改: 字典序列[‘key’] = 值
注意: 如果key存在則修改該鍵對應的值,如果key不存在則新增此鍵值對
刪:
del(dict)洗掉字典del dict['Key']洗掉字典中指定鍵值對dict.clear()清空字典查:
按key值寫法直接查找: 字典序列[‘鍵’]
按函式寫法查找: get() keys() values() items()
get(): 獲取某個鍵對應的值字典序列.get(key , 默認值)注意:若當前查找的key不存在則回傳默認值,若默認值省略不寫則回傳None
keys(): 獲取字典中所有的key,并回傳可迭代物件字典序列.keys()values(): 獲取字典中所有的values,并回傳可迭代物件字典序列.values()items(): 獲取字典中所有的鍵值對(key 和 values),并回傳可迭代物件 ,里面的資料是元組字典序列.items() -
字典的回圈遍歷:
遍歷字典的Key:
for key in dict1.keys(): print(key)遍歷字典的Value:
for value in dict1.values(): print(value)遍歷字典的元素:
for item in dict1.items(): print(item)遍歷字典的鍵值對(拆包):
for key, value in dict1.items(): print(f'{key} = {value}') -
集合: 創建集合可使用 {} 或 set() ,但是如果要創建空集合只能使用 set() , 因為使用 {} 會創建空字典,
集合資料特點: 集合里面的資料會自動去重,不允許重復;集合里面的資料沒有順序,且不支持下標,集合是可變型別,
-
集合的創建:
直接創建:
s1 = {10 , 20 , 30 , 40 , 50}使用set()創建:
s2 = set('brother')創建空集合:
s3 = set() -
集合中資料的常見操作:
增加資料: add() update()
集合.add(資料)增加單個資料,要增加的資料在原集合中存在的話,不進行任何操作集合.update(資料串列)在集合中增加資料序列洗掉資料: remove() discard() pop()
集合.remove(資料)洗掉集合中的指定資料,如果資料不存在則會報錯集合.discard(資料)洗掉集合中的指定資料,如果資料不存在也不會報錯集合.pop()隨即洗掉集合中的某個資料,并回傳這個資料查找資料: in 判斷資料在集合序列 not in 判斷資料不在集合序列
-
公共操作:運算子、公共方法、容器型別轉換
運算子:
+合并,支持字串、串列、元組*復制,支持字串、串列、元組in元素是否存在,支持字串、串列、元組、字典not in元素是否不存在,支持字串、串列、元組、字典公共方法:
len()計算容器中元素個數del()洗掉元素max()回傳容器中元素的最大值min()回傳容器中元素的最小值range(start,end,step)生成從start到end的數字(其中不包含end數字),步長為step,供for回圈使用enumerate()將一個可遍歷的資料物件(串列、元組或字串)組合為一個索引序列,同時列出資料和資料下標,一般用在for回圈中enumerate(可遍歷物件, start=0)容器型別轉換:
tuple(序列): 將某個序列轉換成元組list(序列): 將某個序列轉換成串列set(序列): 將某個序列轉換成集合 -
推導式(生成式): 串列推導式、字典推導式、集合推導式
作用: 化簡代碼
串列推導式:用一個運算式創建一個有規律的串列或控制一個有規律串列,
創建0-10的串列:
list = [i for i in range(10)]創建0-10的偶數串列:
list = [i for i in range(10) if i % 2 == 0]多個for回圈串列:
list = [(i , j) for i in range(3) for j in range(3)]字典推導式:快速合并串列為字典或提取字典中目標資料
賦值體驗:
dict = {i:i*2 for i in range(1,5)}將兩個串列合并為字典:
list1 = ['name' , 'age' , 'gender'] list2 = ['Tom' , 20 , 'man'] dict = { list1[i] : list2[i] for i in range(len(list1)) }提取字典中目標資料:
counts = {'a' : 150 , 'b' : 200 , 'c' : 250} count = {key : value for key , value in counts.items() if value >= 200}集合推導式:
list = [1,1,2] set = {i * 2 for i in list}
?
?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/185015.html
標籤:其他
