王世傑 小作業9
1 2 3 4 5 6 7 8 9 10 11 12 13 |
陳皓:沒寫完~
苗子瑾:第五個沒寫完
陳皓:第六個
陳皓:一遇到數學就蒙
苗子瑾:想想就頭疼
苗子瑾:等我回宿舍交作業吧……
周愉:看見那個綠色的燈了麼
周愉:全滅了我就到家了 陳皓:我家網路出門題了
陳皓:剛給聯通打完電話,效率問題~
陳皓:效率問題
苗子瑾:這個圖打不開
苗子瑾:這個圖
|
1.有以上檔案record.txt,將此檔案三人對話每個人的內容單獨儲存一個檔案,並每個檔案中不包含對話人名
fd = open(r'E:\untitled\hw\1.1text', mode = 'w+', encoding = 'utf-8') fd.write('''陳皓:沒寫完~ 苗子瑾:第五個沒寫完 陳皓:第六個 陳皓:一遇到數學就蒙 苗子瑾:想想就頭疼 苗子瑾:等我回宿舍交作業吧…… 周愉:看見那個綠色的燈了麼 周愉:全滅了我就到家了 陳皓:我家網路出門題了 陳皓:剛給聯通打完電話,效率問題~ 陳皓:效率問題 苗子瑾:這個圖打不開 苗子瑾:這個圖 ''') fd.seek(0, 0) while True: s = fd.readline() if s == '': break else: for i in s: if i == ':': s1 = s[:s.index(':')] s2 = s[s.index(':')+1:] break if s1 == '陳皓': cd = open(r'E:\untitled\hw\c.text', mode='a', encoding='utf-8') cd.write(s2) if s1 == '苗子瑾': cd = open(r'E:\untitled\hw\m.text', mode='a', encoding='utf-8') cd.write(s2) if s1 == '周愉': cd = open(r'E:\untitled\hw\z.text', mode='a', encoding='utf-8') cd.write(s2)
2.讀入使用者輸入的檔案的路徑和一個字串和行數,將檔案中的第n行行首插入使用者輸入的字串
import sys s = sys.argv[2] n = sys.argv[3] m = int(n) text = sys.argv[1] with open(text, mode='r+', encoding='utf-8') as rf: while m > 1: print(rf.readline()) m -= 1 rf.seek(0,1) rf.write(s)
3.下面只有一種方式不能開啟檔案,請嘗試,並說明原因?
01. f = open('E:/test.txt', 'w')
02. f = open('E:\test.txt', 'w')
03. f = open('E://test.txt', 'w')
04. f = open('E:\\test.txt', 'w')
02不可以,window下讀取可以用\,但在字串中\會被當做轉義字元使用,被轉義後可能就找不到原來的路徑了。
4.開啟一個檔案使用open()函式的時候,通過設定檔案的開啟方式,決定開啟的檔案具有哪些性質,請總結都有哪些方式,並說明區別
r只讀方式開啟,指標放在檔案的開頭,這是預設方式。
rb以二進位制只讀方式開啟,指標放在檔案的開頭,預設方式。
r+以讀寫方式開啟檔案,指標預設為放在檔案的開頭。
rb+以二進位制讀寫方式開啟檔案,指標預設為放在檔案的開頭。
w開啟檔案只用於寫入,如果檔案存在,則刪除原來的檔案內容,重新編寫;若檔案不存在,則建立檔案寫入。
wb以二進位制方式開啟檔案只用於寫入,如果檔案存在,刪除原檔案內容,從頭重新編寫;若不存在,建立新檔案。
w+開啟檔案為讀寫方式,如果檔案存在,則刪除原來檔案的內容,重新編寫;若檔案不存在,則建立新檔案寫入。
wb+以二進位制方式開啟檔案用於讀寫,如果檔案存在,則刪除原檔案內容,從頭開始編寫;若檔案不存在,則建立新檔案寫入。
a開啟檔案用於追加,若檔案存在,指標放在檔案結尾,新內容會被寫入已有內容之後,若檔案不存在,建立新檔案寫入。
ab以二進位制方式開啟檔案用於追加,若檔案存在,指標放在檔案結尾,新內容會被寫入已有內容之後,若檔案不存在,建立新檔案寫入。
a+開啟檔案用於讀寫,若檔案存在,指標放入檔案結尾,檔案是追加模式,若檔案不存在,建立新檔案用於讀寫。
ab+以二進位制方式開啟檔案用於讀寫,檔案存在,指標放在檔案結尾,若檔案不存在,建立新檔案用於讀寫。
5.如何將一個檔案物件f中的資料存放到列表中
s = '''a b c d ''' with open('5.1text', mode='w+', encoding='utf-8') as fd: fd.writelines(s) print(fd.readlines(4)) l = [] with open('5.1text', mode='r', encoding='utf-8') as f: while True: #f.seek(0,1) data = f.readline() if data == '': break else: l.append(data) print(l)
6.如果得到檔案物件f的每一行資料,嘗試使用多種方法
s = '''a b c d ''' with open('6.1text', mode='w+', encoding='utf-8') as fd: fd.writelines(s) fd.seek(0,0) #print(fd.read()) #print(fd.readlines()) while True: data = fd.readline() if data == '': break else: print(data)
3.
坦克
某次戰役中,為便於資訊互動,我軍偵察部門將此次戰役的關鍵高地座標設定為(x=0,y=0)並規定,每向東增加100米,x加1,每向北增加100米,y加1。同時,我軍情報部門也破譯了敵軍向坦克傳送的指揮訊號,其中有三種訊號(L,R,M)用於控制坦克的運動,L 和 R 分別表示使令坦克向左、向右轉向,M 表示令坦克直線開進100米,其它訊號如T用於時間同步,P用於位置較準。
一日,我軍偵察兵發現了敵軍的一輛坦克,偵察兵立即將坦克所在座標(P, Q)及坦克前進方向(W:西,E:東,N:北,S:南)傳送給指揮部,同時啟動訊號接收器,將坦克接收到的訊號實時同步發往指揮部,指揮部根據這些資訊得以實時掌控了該坦克的位置,並使用榴彈炮精準地擊毀了該坦克。
請設計合理的資料結構和演算法,根據坦克接收到的訊號,推斷出坦克所在的位置。
設計時請考慮可能的擴充套件情況,並體現出您的設計風格。
假設,偵察兵傳送給指揮部的資訊如下:
坦克座標:(11,39)
坦克執行方向:W
坦克接收到的訊號為:MTMPRPMTMLMRPRMTPLMMTLMRRMP
其位置應該是(9,43),運動方向為E
s = input('偵察兵輸入坦克的動向:') x1, y1 = eval(input('偵察兵輸入坦克的座標:')) d1 = input('偵察兵輸入坦克的行駛方向:') class Coordinate(object): def __init__(self,x,y): self.x = x self.y = y class Direction(Coordinate): def __init__(self,d,x,y): super().__init__(x,y) self.d = d class Trend(Direction): def __init__(self,d,t,x,y): super ().__init__(d,x,y) self.t = t def tre(self): if self.d == 'W': if self.t == 'L': self.d = 'S' if self.t == 'R': self.d = 'N' if self.t == 'M': self.x -= 1 return (self.d, self.x, self.y) if self.d == 'E': if self.t == 'L': self.d = 'N' if self.t == 'R': self.d = 'S' if self.t == 'M': self.x += 1 return (self.d, self.x, self.y) if self.d == 'N': if self.t == 'L': self.d = 'W' if self.t == 'R': self.d = 'E' if self.t == 'M': self.y += 1 return (self.d, self.x, self.y) if self.d == 'S': if self.t == 'L': self.d = 'E' if self.t == 'R': self.d = 'W' if self.t == 'M': self.y -= 1 return (self.d, self.x, self.y) l = [] for i in s: if i != 'T' and i != 'P': l.append(i) for j in range(len(l)): tre = Trend(d1, l[j], x1, y1) l2 = list(tre.tre()) d1 = l2[0] x1 = l2[1] y1 = l2[2] print('坦克座標是:({},{}),動向是:{}'.format(x1, y1, d1))
撲克牌: