王世杰 小作业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))

扑克牌:

 

posted on 2018-12-21 11:37  学府伊人醉  阅读(88)  评论(0编辑  收藏  举报

导航