測試學習筆記(P51-P72教程from凡雲教育)之python基礎
P51
程式設計基本概念
程式是一段可以由計算機執行的程式碼。
程式= 語法+演算法+資料結構
P52
New project建立時選擇現有直譯器即可;
P53
學習一門語言究竟要學什麼:
輸入輸出
資料型別
控制結構
函式定義
物件定義
檔案讀寫
異常處理
Python 執行的三種方式:
- 互動式直譯器種直接執行python程式碼(cmd敲python進入)
- 命令列的方式執行python程式碼(cmd)
- 用編輯器執行python程式碼(pycharm等)
P54
Python語言基礎
input()接受使用者輸入,預設返回值是字串
X=int(input(“enter your number:”))--轉型輸入為整型
print() 逗號分隔引數,預設換行顯示(end=’\n’,不想要換行可以寫成end=’’)
print(“hello”,”world”,”!”)
P55
Python種使用變數需要注意的點:
- Python中的變數不需要型別宣告,變數型別由賦值給它的資料型別決定;
- 每個變數在前都必須先被賦值,變數賦值後該變數才被建立;
- 等號用來賦值,等號左邊的是變數名,右邊的是儲存在變數中的值。
python保留關鍵字查詢:cmd進入直譯器,輸入keyword module 即可查詢。
Python命名規則:
- 以字母下劃線開頭,剩餘部分字母、數字、下劃線均可。 py檔案不要使用-符號、不要以數字開頭
- 大小寫敏感。使用大寫首字母可以有效避開關鍵字。
- 變數名不要使用關鍵字
- 儘量用能夠表徵變數含義的變數名(見名知意)
P56
佔位符
格式佔位符(%)是在python語言中格式輸入函式,如print()等函式中使用,其意義就是起到格式佔位的意思,表示在該位置有輸入或者輸出。
%d,整數,print("我今年%d歲了"%(18))
%f,浮點數(預設6位小數),print('%.3f'%(22.3))
%s,字串,print("hello,%s和%s"%('小明','小紅'))
%%,表示%符號本身,print("大概有%d%%"%(40))
format方法,支援不指定資料型別的佔位
print("我今年{}歲了".format(18))
print('{}'.format(22.3))
print("hello,{}和{}".format('小明','小紅'))
print("大概有{}%".format(40))
f方法更簡單
b=3.1415926
a='小蘭'
print(f"Π的值是{b},學生姓名{a}")
註釋#、三引號、
縮排,四個空格或者tab
P57
安裝python
P58
資料型別:
Number數字 string字串 tuple元組 (不可變)
List列表 Set集合 Dictionary字典 (可變)
可變資料型別:改變資料的值並不會產生一個新的物件,變數仍然指向原來的物件(地址id不變)
不可變資料型別:但是改變了資料的值之後,這個值就將變成另一個物件的資料型別,叫不可變資料型別(地址id會變)
P59
數值型資料型別
整型、浮點型、複數
型別轉換int(),float()
print(type(i))列印當前資料型別
print(15//2)整除(取商的整數)
print(15%2)取餘
print(2**3)2得三次方
math庫常用方法
print(math.ceil(-4.5))# 取大於等於當前數的最小整數
print(math.fabs(-2.5))# 取當前數的絕對值
print(math.floor(-2.5))# 取小於等於當前數的最大整數
print(math.pow(2,3))# 2的3次方
print(math.sqrt(16))# 16開方
Random 模組
print(random.random())返回[0.0,1.0)之間的浮點數。
random.randint(a,b)生成一個[a,b]之間的隨機數
random.randrange(a,b)生成一個[a,b)之間的隨機數
random.uniform(a,b)生成一個[a,b]之間的隨機浮點數
random.choice([])從列表中隨機取出一個元素
random.shuffle([])打亂列表中元素的順序
random.sample([],n)從序列中隨機取出n個值
P60
字串型別
單雙三引號括起來的值或者賦值給的變數都是屬於字串型別
字串中單雙三引號不能混用
三引號一般用於程式碼註釋或保持樣式的長字串輸出
字串切片
str = '1234567890'
print(str[-5:9:1])
結果:6789
[start:end:step]
Step為正時,start要在end左邊,無論如何標序。
Step為負時,start要在end右邊,無論如何標序。
print(str[::-1]) 倒序輸出
print(str[-1:5:-1]) 0987
P61
原始字串
s=r”c:/software/npatcge”
Print(s)
P62
字串處理
print(len(s));字串長度
print(s.count(‘1’,5,len(s)))從第五位
print(s.capitalize()) 首字母大寫
print(s.find(‘1’))查詢返回序號,無則返回-1
print(s.replace(‘90’,’aa’)) 替換
print(s.split(‘5’))用5做切分,結果['1234', '67890']
print(str.index('h')),index用法通find,但沒找到字元程式會報錯
print(str.isdigit())ture 是否只包含數字,isalpha是否只包含字母
islower,字串包含字母且所有字母小寫,則true
isspace 字串只包含空格則true
istitle 字串標題化則true
lower,轉小寫
print(str.startswith('6', 5, len(str)-1))是否以指定字串開頭,返回值true/false
print(str.strip('1')) strip,預設去空白,也可指定,只能去兩邊的
‘’.join()方法,以指定符號連線後面列表的字串內容,以字串形式返回
a=[‘h’,’e’,’l’,’l’,’o’], print(‘’.join(a))
P63
列表
容器型資料型別,可以用於存放其他資料型別的資料型別
list1=[‘oh’,’my’,’god’]
list2=list1
兩個列表指向同一塊記憶體區域;
list2=list1[:] 或者 list2=list1.copy()
兩個列表指向不同的記憶體區域,但列表內容相同;
列表巢狀
list1=['a', ['b', 'c', 'd'], 'e']
print(list1[1][2])
取d的寫法
列表常用方法:
list.append(obj)列尾新增新物件
list.count(obj)統計某個元素在列表中出現的次數(巢狀列表的元素不計入)
list.extend(seq)在列表末尾一次性追加另一個序列的多個值;list1+list2效果等於list1.extend(list)
List.insert(位數,值)列表指定位置新增值
list.pop(位數)刪除指定位置的元素
list.remove(值)刪除值為指定的元素
list.reverse()把列表倒序
list.sort()、list.sort(reverse=true)排正、倒序,數值型的列表有意義
Min\max\sum對於數值型列表求和使用
list()方法:a=list(‘hello’), a=[‘h’,’e’,’l’,’l’,’o’]
List(range(start,end=None))快速生成指定範圍內數字列表
P64
元組與列表類似,區別有兩點:
- 用小括號 元組元素不能修改
如果元組的元素只有一個,必須要在元素後加一個逗號才會認為時元組
tuple(seq),將列表轉換成元組
P65
集合(set),無序不重複的元素集,主要用於消除重複元素
S={}
Set([])列表強轉為集合,其他型別也可強轉
add\remove\del刪除整個集合\clear清空\len
st1={'g','o','o','d'}
for item in st1:
print(item)
P66
字典,無序的物件集合,字典中的元素通過鍵來存取,鍵不重複。
字典中的鍵必須時不可變資料型別。
dic1=dic2地址相同
dic1=dic2.copy()值相同
dic.clear()清空列表
dic.fromkeys([])建立以列表值為鍵的字典
dic3= dict.fromkeys(['id','num','price'])
print(dic3)
結果
{'id': None, 'num': None, 'price': None}
dic.get(key,default=None)
取鍵的值;鍵不存在時返回none
dic1.get(key1) 等同與dic1[key],但是當key不存在時dic1[key]會拋異常
dic.update(dict2)
把的dict2鍵值對合併到dict1中
dic.keys()取鍵
print(dic1.keys())
結果dict_keys([‘’,’’,’’])
dic.values()取值
print(dic1.values())
結果dict_values([‘’,’’,’’])
dic.items()取鍵和值
print(dic1.items())
結果dict_items([(),(),()])
dic.popites()隨機刪除一個鍵值對
dic.pop(key)刪除指定鍵值對
P67
If else
P68
迴圈結構
for用於已知集合進行迴圈,如列表、集合、字典、range數字迴圈
While用於知道迴圈條件,比如大於某個值、值為真。
迴圈巢狀判斷
例1
for x in name:
if x=='wangwu':
# break 列印遇到wangwu時終止且wangwu不做列印
Continue 列印遇到wangwu時不做列印,繼續迴圈直到列表迴圈完
print(x)
例2
for x in name:
if x=='wangwu1':
print('found')
break
else:
print('notfound')
佔位符:pass
P69
函式:
內建函式,print等
模組函式,匯入模組後使用 import random;第三方模組放在lib/site-package中
自定義函式
巢狀函式(埋個裝飾器)
P70
函式引數相關
return後面的語句不執行
沒有return的函式返回值為none
改變形參得值是否會使實參值改變,取決於引數的資料型別:
引數是不可變資料型別,則不會改變
引數是可變資料型別,則會改變
位置引數(位置一一對應)
關鍵字引數(鍵值對形式,用等號連線,可以不安位置順序對應)
預設值引數(呼叫時沒有傳引數則使用預設值,預設值在函式宣告時指定)
不定長引數:
*args傳遞元組形式不定長引數;**kwargs傳遞字典型別的不定長引數,要求寫在*args之後
lst=[1,2,3,4,5]
printinfo(1,*lst)------此處*表示將lst自動解包,作為N個引數傳遞給函式
P71
想在函式給全域性變數重新賦值(=),需要在函式內使用關鍵字global 變數;讀取全域性變數不需要加;如果呼叫該變數的方法不是重新賦值,比如修改列表,可以不用加,如 list.append
如果函式內有與全域性變數重名的變數,則需要用global加以區分;
P72
編寫註冊、登入程式碼