小甲鱼第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)

浙公网安备 33010602011771号