• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      天外來信

      2018-09-08 11:15王麗麗
      中國信息技術(shù)教育 2018年16期
      關(guān)鍵詞:字符串信件代碼

      王麗麗

      情境導(dǎo)入

      忽然有一天,阿派收到一封外面世界的來信,他迫不及待地開始讀信,卻發(fā)現(xiàn)信件內(nèi)容全是一串一串的數(shù)字……

      在這一課中,學(xué)生將學(xué)習(xí)如何利用Python讀寫文件及其拓展應(yīng)用。

      讀信

      在阿派讀信之前,先來了解一下Python是如何讀取文件的。

      1.Python讀取文件

      (1)讀取文件的簡單示例

      關(guān)于文件的基本處理主要有文件的打開、操作和關(guān)閉。如表1,利用open()打開letter.txt文件,并返回一個名為f的文件對象。其中,打開文件的模式有只讀、寫入、追加等,默認(rèn)的文件訪問模式為只讀(r)。表1的程序運行后,將會讀取如圖1的文件letter.txt,運行的結(jié)果如圖2。

      (2)read()方法

      當(dāng)read()的括號內(nèi)為空或負(fù)數(shù)時,將讀取文件的所有內(nèi)容。如果調(diào)用f.read(size),size是一個可選的數(shù)字類型的參數(shù),則將讀取指定的數(shù)據(jù)。比如,將表1的第3行代碼修改為print(f.read(5)),則程序運行結(jié)果如圖3。

      (3)readline()方法

      f.readline()會從文件中讀取當(dāng)前指針下一行內(nèi)容的字符串。比如,將表1的第3行代碼修改為print(f.readline()),則程序運行結(jié)果如下頁圖4。如果將第3行修改為2行readline(),則運行效果如下頁圖5,由于print默認(rèn)換行,會在輸出一行字符串后產(chǎn)生一行空行。如果不想產(chǎn)生空行,則將代碼修改為print(f.readline(), end=''),其中的end=''表示print輸出之后不換行。

      (4)readlines()方法

      f.readlines()將返回整個文件內(nèi)容的列表,每一項是以換行符結(jié)尾的一行字符串。比如,將表1的第3行代碼修改為print(f.readlines()),則程序運行結(jié)果如下頁圖6。

      (5)for line in f:的作用

      如下頁表2,利用for line in f:可以實現(xiàn)文件的遍歷。這種做法在讀取文件時,不是一次性讀取全部文件,而是采用每次讀取一行的方式。

      關(guān)于文件的讀取模式,除了r(只讀)模式以外,還有rb模式,表示以二進制格式打開一個文件用于只讀。另外,還有r+模式,表示打開一個文件用于讀寫。還有rb+模式,可以用二進制格式打開一個文件用于讀寫。以上四種模式,文件指針都會放在文件的開頭。

      2.破譯天外來信

      在了解了Python讀取文件的基本操作后,我們和阿派一起來解讀那封全是數(shù)字的信件。信件的內(nèi)容如下頁圖7,為十行數(shù)字。如果按照一定的規(guī)則來讀信,可以將其解讀為如圖8的圖案。具體的規(guī)則是:每一行為一組數(shù)據(jù)。第1個數(shù)字表示前進的像素;第2個數(shù)字為0表示左轉(zhuǎn),1表示右轉(zhuǎn);第3個數(shù)字表示旋轉(zhuǎn)角度;第4~6個數(shù)字分別表示RGB顏色。據(jù)此規(guī)則,第1行數(shù)字表示向默認(rèn)的水平向右的方向繪制一條紅色的直線,再向右旋轉(zhuǎn)144度。

      結(jié)合turtle庫,利用如圖9的核心代碼,可以實現(xiàn)如圖8的信件圖案的繪制效果。其中的第4行代碼中,line.split(‘,)表示以逗號區(qū)分間隔,對字符串切片。map(float,line.split(‘,))表示對指定序列做映射,將每一個元素轉(zhuǎn)為浮點數(shù)。list表示將結(jié)果保存為列表,比如[300.0, 1.0, 144.0, 1.0, 0.0, 0.0]。result.append表示追加到result列表中。第5行代碼將讀取的信件內(nèi)容輸出至屏幕,效果如圖10。第6~12行代碼實現(xiàn)了繪制圖案的過程。

      對于信件中的那一串串?dāng)?shù)字,我們還可以使用不同的規(guī)則來解讀,當(dāng)然所繪制的圖案也就不同。

      回信

      1.Python寫入文件

      利用write()方法,可以將數(shù)據(jù)寫入指定文件中。如圖11,先打開已有文件或新建一個空白的文本文檔reply.txt,利用input函數(shù)提示用戶輸入回信內(nèi)容,并將輸入的字符串寫入reply文件,再讀取信件內(nèi)容,并關(guān)閉文件。其中,f.seek(0)表示重新設(shè)置文件讀取指針到開頭。如圖12,利用a+模式還可以追加信件內(nèi)容。

      常用的文件寫入模式有w模式,表示打開一個文件且只能寫入。如圖11中w+模式表示打開一個文件用于讀寫。w和w+模式下,如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。圖12的a+模式表示打開一個文件用于讀寫。如果該文件已存在,文件指針將會放在文件的結(jié)尾,即追加模式。如果該文件不存在,則創(chuàng)建新文件用于讀寫。

      2.回信

      第119頁的圖11~12的文件寫入方式,都只能寫入一行數(shù)據(jù)。一般情況下,正式的寫信,需要輸入多行文本,直至輸入為空時,表示寫信結(jié)束。如第119頁圖13,我們可以利用while循環(huán)語句實現(xiàn)多行回信的功能。而在按下兩次回車鍵后,即輸入為空時,會返回信件內(nèi)容(如第119頁圖14)。

      參照阿派破譯數(shù)字信件的過程,你也可以逆向設(shè)計,將回信內(nèi)容設(shè)置為幾行數(shù)字,并按照特定規(guī)則來讀取,實現(xiàn)特定的圖案效果。

      在Python中的文件讀寫,還有其他的拓展應(yīng)用,如讀取Excel文件,或者利用matplotlib第三方庫來繪制2D圖表等,你可以根據(jù)實際需要來進行設(shè)計和應(yīng)用。

      猜你喜歡
      字符串信件代碼
      My Vacation
      一種基于PowerBuilder環(huán)境字符串相似度算法
      神秘的代碼
      SQL server 2008中的常見的字符串處理函數(shù)
      倍增法之后綴數(shù)組解決重復(fù)子串的問題
      一周機構(gòu)凈增(減)倉股前20名
      重要股東二級市場增、減持明細(xì)
      近期連續(xù)上漲7天以上的股
      最簡單的排序算法(續(xù))
      有獎問答
      元江| 长乐市| 如皋市| 衡阳市| 上思县| 萝北县| 正镶白旗| 固阳县| 剑川县| 河北省| 通榆县| 淳化县| 新疆| 晋城| 驻马店市| 偃师市| 额尔古纳市| 岫岩| 罗山县| 枣阳市| 滨海县| 沅江市| 民勤县| 湘潭市| 布尔津县| 卓资县| 呼伦贝尔市| 横山县| 西峡县| 融水| 鄱阳县| 灵璧县| 江阴市| 云阳县| 西昌市| 渑池县| 浑源县| 洱源县| 元谋县| 昌邑市| 隆回县|