一蛮浑、進制轉(zhuǎn)換
1.其他進制轉(zhuǎn)10進制
- 使用int(num,binary)函數(shù)
- num 要轉(zhuǎn)換的數(shù)字字符串
- binary 按照何種進制來解析 取值:2 8 10 16 0(自動判斷是何種進制)
2. 10進制數(shù)轉(zhuǎn)其他進制
- 轉(zhuǎn)為2進制 bin()
- 轉(zhuǎn)為8進制 oct()
- 轉(zhuǎn)為16進制hex()
3.非10進制之間的轉(zhuǎn)化
思路:先用int(num,binary)函數(shù)轉(zhuǎn)為10進制數(shù)沮稚,然后再轉(zhuǎn)換為目標(biāo)進制
-
例如: 將0o56437轉(zhuǎn)換為2進制數(shù):
bin(int('0o56437',8))
二蕴掏、文件處理
文件處理的步驟一般如下:
- 打開文件
- 操作文件
- 關(guān)閉文件
1.打開文件
使用open(name[, mode[, buffering]])方法打開文件,其參數(shù)說明如下:
name 文件的路徑 可以是絕對路徑挽荡,也可以是相對路徑
mode mode 決定了打開文件的模式:只讀即供,寫入募狂,追加等祸穷。所有可取值見如下的完全列表。這個參數(shù)是非強制的需曾,默認文件訪問模式為只讀(r)呆万。
-
buffering:如果 buffering 的值被設(shè)為 0车份,就不會有寄存扫沼。如果 buffering 的值取 1,訪問文件時會寄存行严就。如果將 buffering 的值設(shè)為大于 1 的整數(shù)器罐,表明了這就是的寄存區(qū)的緩沖大小轰坊。如果取負值衰倦,寄存區(qū)的緩沖大小則為系統(tǒng)默認旁理。
文件打開模式列表:
[圖片上傳失敗...(image-ae249-1629191567312)]
2.操作文件
file對象方法如下:
- file.read([size]):size 未指定則返回整個文件,如果文件大小 >2 倍內(nèi)存則有問題夺艰,f.read()讀到文件尾時返回""(空字串)沉衣。
- file.readline():返回一行郁副。
- file.readlines([size]) :返回包含size行的列表, size 未指定則返回全部行。
- for line in f: print(line) :通過迭代器訪問豌习。
- f.write("hello\n"):如果要寫入字符串以外的數(shù)據(jù),先將他轉(zhuǎn)換為字符串存谎。
- f.tell():返回一個整數(shù),表示當(dāng)前文件指針的位置(就是到文件頭的字節(jié)數(shù))。
- f.seek(偏移量,[起始位置]):用來移動文件指針肥隆。
- 偏移量: 單位為字節(jié)既荚,可正可負
- 起始位置: 0 - 文件頭, 默認值; 1 - 當(dāng)前位置; 2 - 文件尾
3.關(guān)閉文件
關(guān)閉文件 f.close()
4. 文件操作一般步驟
-
一般步驟
f = open('test.txt','r',encoding='utf-8') # 打開文件 txt = f.read() # 操作文件 f.close() # 關(guān)閉文件
-
加強版(with關(guān)鍵字)
with語句作用是簡化文件操作的try...except...finally流程,不必顯式的關(guān)閉文件
with open('test.txt','r',encoding='utf-8') as f: txt = f.read()
5.一維數(shù)據(jù)的操作
什么是一維數(shù)據(jù)
答:由對等關(guān)系的有序或無序數(shù)據(jù)構(gòu)成栋艳,采用線性方式(一條直線排開)組織恰聘。對等關(guān)系:這些數(shù)據(jù)平級關(guān)系(不是包含吸占、從屬關(guān)系)
一維數(shù)據(jù)的寫入
思路:將列表中的一維數(shù)據(jù)先轉(zhuǎn)化為字符串晴叨,再將字符串寫入文件中。
data = ['上海','北京','重慶','天津']
# 寫數(shù)據(jù)
with open('test.txt','w',encoding='utf-8') as f:
# 將列表轉(zhuǎn)化為字符串
data = ','.join(data)
# 寫入文件
f.write(data)
一維數(shù)據(jù)的讀取
思路:打開文件矾屯,使用f.read()方法將文件中的內(nèi)容讀取成字符串兼蕊,再將這個字符串按照‘,’分割成列表。
data = []
with open('test.txt','r',encoding='utf-8') as f:
data_str = f.read() # 讀取內(nèi)容
data = data_str.split(',') # 將內(nèi)容以逗號分割
6.二維數(shù)據(jù)的操作
什么是二維數(shù)據(jù)件蚕?
答:由多個一維數(shù)據(jù)構(gòu)成遍略,是一維數(shù)據(jù)的組合形式。也稱為表格數(shù)據(jù)骤坐,其中绪杏,表頭是二維數(shù)據(jù)的一部分,也可以不作為其中的一部分纽绍。
二維數(shù)據(jù)的表示形式蕾久?
答:使用二維列表來表示二維數(shù)據(jù)、
姓名 | 年齡 | 性別 | 電話 |
---|---|---|---|
孫悟空 | 500 | 男 | 18888888888 |
豬八戒 | 36 | 男 | 18877777777 |
沙和尚 | 28 | 男 | 18866666666 |
唐三藏 | 15 | 男 | 18855555555 |
白龍馬 | 9 | 男 | 18844444444 |
白骨精 | 2000 | 女 | 18833333333 |
二維數(shù)據(jù)的寫入
思路:將二維列表轉(zhuǎn)化為儲存字符串的一位列表拌夏,然后遍歷列表僧著,將每個字符串單獨寫到文件中的一行。
data = [
['孫悟空','500','男','18888888888'],
['豬八戒','36','男','18877777777'],
['沙和尚','28','男','18866666666'],
['唐三藏','15','男','18855555555'],
['白龍馬','9','男','18844444444'],
['白骨精','2000','女','18833333333']
]
with open('test.csv','w',encoding='utf-8') as f:
for item in data:
f.write(','.join(item)+'\n')
二維數(shù)據(jù)的讀取
思路:將所有數(shù)據(jù)先讀取出來障簿,然后按照換行分割盹愚,再將每個分割后的字符串按照逗號分割。
result = []
with open('test.csv','r',encoding='utf-8') as f:
for i in f:
result.append(i.strip('\n').split(','))
print(result)
三站故、異常處理
1.概念
python解釋器檢測到錯誤皆怕,觸發(fā)異常(也允許程序員自己觸發(fā)異常)毅舆。程序員編寫特定的代碼,專門用來捕捉這個異常(這段代碼與程序邏輯無關(guān)愈腾,與異常處理有關(guān))憋活。如果捕捉成功則進入另外一個處理分支,執(zhí)行你為其定制的邏輯虱黄,使程序不會崩潰悦即,這就是異常處理。
python解釋器去執(zhí)行程序橱乱,檢測到了一個錯誤時辜梳,觸發(fā)異常,異常觸發(fā)后且沒被處理的情況下泳叠,程序就在當(dāng)前異常處終止冗美,后面的代碼不會運行,誰會去用一個運行著突然就崩潰的軟件析二。所以你必須提供一種異常處理機制來增強你程序的健壯性與容錯性粉洼。良好的容錯能力,能夠有效的提高用戶體驗叶摄,維持業(yè)務(wù)的穩(wěn)定性属韧。
程序運行中的異常可以分為兩類:語法錯誤和邏輯錯誤蛤吓。首先宵喂,我們必須知道,語法錯誤跟異常處理無關(guān)会傲,所以我們在處理異常之前锅棕,必須避免語法上的錯誤。
2.異常種類
在python中不同的異程噬剑可以用不同的類型(python中統(tǒng)一了類與類型裸燎,類型即類)去標(biāo)識,不同的類對象標(biāo)識不同的異常泼疑,一個異常標(biāo)識一種錯誤德绿。
常見異常:
AttributeError 試圖訪問一個對象沒有的樹形,比如foo.x退渗,但是foo沒有屬性x
IOError 輸入/輸出異常移稳;基本上是無法打開文件
ImportError 無法引入模塊或包;基本上是路徑問題或名稱錯誤
IndentationError 語法錯誤(的子類) 会油;代碼沒有正確對齊
IndexError 下標(biāo)索引超出序列邊界个粱,比如當(dāng)x只有三個元素,卻試圖訪問x[5]
KeyError 試圖訪問字典里不存在的鍵
KeyboardInterrupt Ctrl+C被按下
NameError 使用一個還未被賦予對象的變量
SyntaxError Python代碼非法翻翩,代碼不能編譯(個人認為這是語法錯誤都许,寫錯了)
TypeError 傳入對象類型與要求的不符合
UnboundLocalError 試圖訪問一個還未被設(shè)置的局部變量稻薇,基本上是由于另有一個同名的全局變量,
導(dǎo)致你以為正在訪問它ValueError 傳入一個調(diào)用者不期望的值梭稚,即使值的類型是正確的
其他異常
ArithmeticError
AssertionError
AttributeError
BaseException
BufferError
BytesWarning
DeprecationWarning
EnvironmentError
EOFError
Exception
FloatingPointError
FutureWarning
GeneratorExit
ImportError
ImportWarning
IndentationError
IndexError
IOError
KeyboardInterrupt
KeyError
LookupError
MemoryError
NameError
NotImplementedError
OSError
OverflowError
PendingDeprecationWarning
ReferenceError
RuntimeError
RuntimeWarning
StandardError
StopIteration
SyntaxError
SyntaxWarning
SystemError
SystemExit
TabError
TypeError
UnboundLocalError
UnicodeDecodeError
UnicodeEncodeError
UnicodeError
UnicodeTranslateError
UnicodeWarning
UserWarning
ValueError
Warning
ZeroDivisionError
3.基本語法
try:
語句...
...
except <異常名稱(如果不寫則捕獲所有異常)>:
處理異常語句...
...
else:
沒有發(fā)生異常,則執(zhí)行的語句...
...
finally:
無論有沒有捕獲到異常絮吵,都要執(zhí)行的代碼...
...
4.例子
inp1 = input('請輸入一個數(shù)字:')
inp2 = input('請輸入一個數(shù)字:')
try:
sum_inp = int(inp1)+int(inp2)
print('您輸入的數(shù)字之和為:'+str(sum_inp))
except ValueError:
print('您輸入的內(nèi)容不合法')
finally:
print('這是finally語句')
四弧烤、常用內(nèi)置函數(shù)
1.數(shù)學(xué)運算類
- abs(n)函數(shù)
求一個數(shù)的絕對值。
abs(-68) # 輸出68
- divmod(n1,n2)
返回一個整除結(jié)果和取模結(jié)果的二元組蹬敲。(先整除暇昂,后取模)
divmod(10,3) # 返回(3,1)
- max(n)
n可以是一個字符串或列表或元組或集合或可變長參數(shù),求他們當(dāng)中的最大值伴嗡。
max(1,5,8,9,7) # 返回9
max([1,6,9,8,7]) # 返回9
max('asdgasdey') # 返回y
- min(n)
求最小值急波,用法和max一樣
- sum(*n)
n是一個可變長參數(shù),傳入數(shù)字可求他們的和瘪校。
sum(1,2,3,4,5,6) # 返回21
- round(n1,n2)
將傳入的浮點數(shù)n1澄暮,保留n2位小數(shù)。四舍五入
round(3.1415926,2) # 保留兩位小數(shù) 返回3.14
round(3.1455926,2) # 保留兩位小數(shù) 返回3.15