小甲鱼第29课课后练习——格式化类型

0. 编写一个程序,接受用户的输入并保存为新的文件。

def f_write(file_name):
    f = open(file_name, "w")
    print('请输入内容【单独输入\':w\'保存退出】:')

    while True:
        write_some = input()
        if write_some != ':w':
            f.write(write_some)
        else:
            break

    f.close()

file_name = input("请输入文件名:")
f_write(file_name)

1. 编写一个程序,比较用户输入的两个文件,如果不同,显示出所有不同处的行号与第一个不同字符的位置。

def file_compare(file1, file2):
    f1 = open(file1)
    f2 = open(file2)
    count = 0
    differ = []
    for line1 in f1:
#一句一句执行
        line2 = f2.readline()
        count += 1
        if line1 != line2:
            differ.append(count)

    f1.close()
    f2.close()
    return differ

file1 = input("请输入需要比较的一个文件名:")
file2 = input("请输入需要比较的另一个文件名:")
file_compare(file1, file2)

if len(differ) ==0:
    print("两个文件完全一样")
else:
    print("两个文件共有 %d 处不同:" % len(differ))
    for each in differ:
        print("第 %d 行不一样" % each)

*在 Python 中,else 语句能跟哪些语句进行搭配?

(1)else 语句不仅能跟 if 语句搭,构成“要么怎样,要么不怎样”的语境

(2)Ta 还能跟循环语句(for 语句或者 while 语句),构成“干完了能怎样,干不完就别想怎样”的语境;

(3) else 语句跟异常处理进行搭配,构成“没有问题,那就干吧”的语境。

*使用 with 语句处理文件可以减少需要编写的代码量和粗心的错误

ef file_compare(file1, file2):
    with open(file1) as f1, open(file2) as f2:
        count = 0 # 统计行数
        differ = [] # 统计不一样的数量

        for line1 in f1:
            line2 = f2.readline()
            count += 1
            if line1 != line2:
                differ.append(count)

    return differ

file1 = input('请输入需要比较的头一个文件名:')
file2 = input('请输入需要比较的另一个文件名:')

differ = file_compare(file1, file2)

if len(differ) == 0:
    print('两个文件完全一样!')
else:
    print('两个文件共有【%d】处不同:' % len(differ))
    for each in differ:
        print('第 %d 行不一样' % each)

 

2. 编写一个程序,当用户输入文件名和行数(N)后,将该文件的前N行内容打印到屏幕上。

def file_view(file_name, line_num):
    file_name = input("请输入文件名:")
    line_num = input("请输入行数:")
    print("您要找的 %s 的前 %s 行内容如下:" % (file_name, line_num))

    f = open(file_name)
    for i in range(int(line_num)):
        print(f.readline(), end="")
    f.close()

file_view(file_name, line_num)

 3. 在上一题的基础上扩展,用户可以随意输入需要显示的行数。(如输入13:21打印第13行到第21行,输入:21打印前21行,输入21:则打印从第21行开始到文件结尾所有内容)

def file_view(file_name, line_num):
    begin = "1"
    end = "-1"
    (begin, end)  =  line_num.split(":")

    if begin == "":
        begin = "1"
    if end == "":
        end = "-1"
    if begin == "1" and end = "-1":
        temp = "全文"
    elif begin == "1":
        temp = "前s%行" % end
    elif end = "-1":
        temp = "从s%行到结尾" % begin
    else:
        temp = "从s%行到s%行" % (begin, end)
    print("您要查看的s%文件s%行的内容为:" %(file_name, temp))

    begin = int(begin) - 1
    end = int(end)
    lines = end - begin

    f = open(file_name)
    for i in range(begin):
        f.readline()   #消耗掉begin之前的内容
    for j in range(lines):
print(f.readline())
    f.close

file_name = input("请输入想要打开的文件名:")
line_num = input("请输入您想查看的文件内容(格式13:15):")
def file_view(file_name, line_num):

4. 编写一个程序,实现“全部替换”功能。(所有的愿替换成希望)

 

def file_replace(file_name, rep_word, new_word):
    f = open(file_name)
    count = 0
    content = []
    for eachline in f:
        if rep_word in eachline:
            count += 1
            eachline = eachline.replace(rep_word, new_word)
            content.append(eachline)
    decide = input("您的s%文件中有s%处【s%】,您确定要将所有的【s%】替换成【s%】么?/n 【Yes or no】:" %(file_name, count, rep_word, rep_word, new_word)))
    if decide == Yes:
        f_write = open(file_name, "w")
        f_write.writelines(content)
        f_write.close()
    f.close()

file_name = input('请输入文件名:')
rep_word = input('请输入需要替换的单词或字符:')
new_word = input('请输入新的单词或字符:')
file_replace(file_name, rep_word, new_word)

 

posted @ 2020-10-09 12:21  celine227  阅读(153)  评论(0)    收藏  举报