1. 程式人生 > >王世傑 小作業9

王世傑 小作業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))

撲克牌: