|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目是:编写一个程序,比较用户输入的两个文件,如果不同,显示出所有不同处的行号与第一个不同字符的位置。
这里题目要求还要找出第一个不同字符的位置,所有我自己的程序如下:
- file1 = input('请输入需要比较的头一个文件名:')
- file2 = input('请输入需要比较的另一个文件名:')
- count = 0
- p=0
- list3 =[]
- list4 =[]
- f1 = list(open(file1,'r',encoding='UTF-8'))
- f2 = list(open(file2,'r',encoding='UTF-8'))
- l1 = len(f1)
- l2 = len(f2)
- short = l1 if l1<=l2 else l2
- long = l1 if l1>=l2 else l2
- for i in range(0,short):
- if f1[i] != f2[i] :
- n = len(f1[i])
- for m in range(0,n):
- if f1[i][m] != f2[i][m]:
- list4.append(m+1)
- break
- else:
- continue
- count +=1
- list3.append(i+1)
- else:
- continue
- print('两个文件共有【%d】处不同:'% (count+(long-short)))
- for j in list3:
- print('第',j,'行不一样',' 第',list4[p],'个字符开始不一样')
- p+=1
- for k in range(short+1,long+1):
- print('第',k,'行不一样',' 第1个字符开始不一样')
复制代码
结果图如下:
请问我这样理解正确吗??
本帖最后由 Twilight6 于 2020-7-5 08:12 编辑
对哈,能做出同样的效果就行,这里建议你代码可以少去的几个地方,去不去都不影响,只是代码美观些:
第一:open 默认打开方式就是 r 只读,所以你 open 里的 'r' 可以去掉哈
第二:- for m in range(0,n):
- if f1[i][m] != f2[i][m]:
- list4.append(m+1)
- break
- else:
- continue
复制代码
代码里的 else:continue 可以去掉,因为当你循环条件不满足时候 for 循环会开始下一次循环,而且你continue 后没有需要运行的代码,所以你这里这个可以去掉哈~
更改 后的代码:
- file1 = input('请输入需要比较的头一个文件名:')
- file2 = input('请输入需要比较的另一个文件名:')
- count = 0
- p = 0
- list3 = []
- list4 = []
- f1 = list(open(file1, encoding='UTF-8'))
- f2 = list(open(file2, encoding='UTF-8'))
- l1 = len(f1)
- l2 = len(f2)
- short = l1 if l1 <= l2 else l2
- long = l1 if l1 >= l2 else l2
- for i in range(0, short):
- if f1[i] != f2[i]:
- n = len(f1[i])
- for m in range(0, n):
- if f1[i][m] != f2[i][m]:
- list4.append(m + 1)
- break
- count += 1
- list3.append(i + 1)
- print('两个文件共有【%d】处不同:' % (count + (long - short)))
- for j in list3:
- print('第', j, '行不一样', ' 第', list4[p], '个字符开始不一样')
- p += 1
- for k in range(short + 1, long + 1):
- print('第', k, '行不一样', ' 第1个字符开始不一样')
复制代码
|
|