Python 3級

一蛮浑、進制轉(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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末阱扬,一起剝皮案震驚了整個濱河市泣懊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌麻惶,老刑警劉巖馍刮,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異窃蹋,居然都是意外死亡卡啰,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進店門警没,熙熙樓的掌柜王于貴愁眉苦臉地迎上來匈辱,“玉大人,你說我怎么就攤上這事杀迹∶肥模” “怎么了?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵佛南,是天一觀的道長梗掰。 經(jīng)常有香客問我,道長嗅回,這世上最難降的妖魔是什么及穗? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮绵载,結(jié)果婚禮上埂陆,老公的妹妹穿的比我還像新娘苛白。我一直安慰自己,他們只是感情好焚虱,可當(dāng)我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布购裙。 她就那樣靜靜地躺著,像睡著了一般鹃栽。 火紅的嫁衣襯著肌膚如雪躏率。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天民鼓,我揣著相機與錄音薇芝,去河邊找鬼。 笑死丰嘉,一個胖子當(dāng)著我的面吹牛夯到,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播饮亏,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼耍贾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了路幸?” 一聲冷哼從身側(cè)響起逼争,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎劝赔,沒想到半個月后誓焦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡着帽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年杂伟,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片仍翰。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡赫粥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出予借,到底是詐尸還是另有隱情越平,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布灵迫,位于F島的核電站秦叛,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏瀑粥。R本人自食惡果不足惜挣跋,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望狞换。 院中可真熱鬧避咆,春花似錦舟肉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至樊销,卻和暖如春整慎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背现柠。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工院领, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留弛矛,地道東北人够吩。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像丈氓,于是被迫代替她去往敵國和親周循。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,870評論 2 361

推薦閱讀更多精彩內(nèi)容