一文先生 发表于 2020-7-5 01:12:49

第29讲 动动手01题

题目是:编写一个程序,比较用户输入的两个文件,如果不同,显示出所有不同处的行号与第一个不同字符的位置。
这里题目要求还要找出第一个不同字符的位置,所有我自己的程序如下:
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 != f2 :
      n = len(f1)
      for m in range(0,n):
            if f1 != f2:
                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+=1
for k in range(short+1,long+1):
    print('第',k,'行不一样',' 第1个字符开始不一样')
http://r.photo.store.qq.com/psc?/V12Rnolx0ECtJT/XwdxpE8Hv.bcKvYPS8WipKt8bVzx.TPUItSWD2dADjDf3Flj8Bm7SU1*8fqrRYIaveQEeNxQ5GNTHBtB*zzwf8qnLUBUtqoLM8N4LXkwiEk!/r
结果图如下:
http://r.photo.store.qq.com/psc?/V12Rnolx0ECtJT/XwdxpE8Hv.bcKvYPS8WipAFRdXGIuTeP2eRLAHMaHKJFY1TZqkPks2FYoa1pNkNNascZ8CQEPI1JwpPNKtECxV7*IJmOhJ1yPYldyLIWMeg!/r

请问我这样理解正确吗??

青出于蓝 发表于 2020-7-5 07:45:24

题意应该就是这个意思,也没说要打印那个字错了啥子的。

Twilight6 发表于 2020-7-5 08:11:33

本帖最后由 Twilight6 于 2020-7-5 08:12 编辑





对哈,能做出同样的效果就行,这里建议你代码可以少去的几个地方,去不去都不影响,只是代码美观些:

第一:open 默认打开方式就是 r 只读,所以你 open 里的 'r' 可以去掉哈

第二:for m in range(0,n):
            if f1 != f2:
                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 != f2:
      n = len(f1)
      for m in range(0, n):
            if f1 != f2:
                list4.append(m + 1)
                break
      count += 1
      list3.append(i + 1)

print('两个文件共有【%d】处不同:' % (count + (long - short)))
for j in list3:
    print('第', j, '行不一样', ' 第', list4, '个字符开始不一样')
    p += 1
for k in range(short + 1, long + 1):
    print('第', k, '行不一样', ' 第1个字符开始不一样')



一文先生 发表于 2020-7-5 17:17:41

青出于蓝 发表于 2020-7-5 07:45
题意应该就是这个意思,也没说要打印那个字错了啥子的。

哈哈对啊,我就按题意写了,也不知道有没有写复杂{:5_91:}想看看其他鱼友们的写法
页: [1]
查看完整版本: 第29讲 动动手01题