DoubleS、Zhao 发表于 2020-11-4 22:20:21

各位大佬帮帮忙

def differ(file1,file2):
    list1 = []
    list2 = []
    #把文件中的每行字符变成列表格式
    for each_line1 in file1:
      list1.append(each_line1)
    for each_line2 in file2:
      list2.append(each_line2)
    print(len(each_line1))
    print(each_line1)
    a = 0
    while True:
      if len(each_line1) >= a:   #第a行小于等于列表所包含元素个数
            if each_line1 == each_line2:   #如果file1第a行等于file2第a行
                continue
            else:                              #否则打印第a行不一样
                print('第',a,'行不一样')
                a += 1
      else:                      #否则退出循环
            break

f1 = input("请输入需要比较的头一个文件名:")
f2 = input("请输入需要比较的另一个文件名:")

file1 = open(f1)
file2 = open(f2)

differ(file1,file2)



主要是第九行,第十行打印出来的结果与预想偏差,而且while里面的循环为什么不执行?


{:9_220:}

昨非 发表于 2020-11-4 22:27:57

哪里有偏差?
你预想中是什么样的?

昨非 发表于 2020-11-4 22:29:31

而且,eachfile1是for循环的局部变量
在外面用是没有定义的啊

jackz007 发表于 2020-11-4 22:46:42

#coding:gbk

def differ(file1 , file2):
    f1 , f2 = open(file1) , open(file2)
    list1 , list2 = list(f1) , list(f2)
    f1 . close()
    f2 . close()
    m1 , m2 = min((len(list1) , len(list2))) , max((len(list1) , len(list2)))
    c = 0
    for k in range(m1) :
      if list1 != list2 :
            print('第' , k + 1 , '行不同')
            c += 1
    if not c : print('两个文件完全相同!')

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

DoubleS、Zhao 发表于 2020-11-5 11:41:37

昨非 发表于 2020-11-4 22:27
哪里有偏差?
你预想中是什么样的?

def differ(file1,file2):
    list1 = []
    list2 = []
    #把文件中的每行字符变成列表格式
    for each_line1 in file1:
      list1.append(each_line1)
    for each_line2 in file2:
      list2.append(each_line2)
    a = 0
    while True:
      if len(list1) >= a:   #第a行小于等于列表所包含元素个数
            if list1 == list2:   #如果file1第a行等于file2第a行
                continue
            else:                              #否则打印第a行不一样
                print('第',a,'行不一样')
                a += 1
      else:                      #否则退出循环
            break

f1 = input("请输入需要比较的头一个文件名:")
f2 = input("请输入需要比较的另一个文件名:")

file1 = open(f1)
file2 = open(f2)

differ(file1,file2)

我把while里面的each_line改了,我的问题是while里面的程序为什么不循环?麻烦您啦


{:9_228:}

昨非 发表于 2020-11-5 12:42:41

DoubleS、Zhao 发表于 2020-11-5 11:41
我把while里面的each_line改了,我的问题是while里面的程序为什么不循环?麻烦您啦

def differ(file1,file2):
    list1 = []
    list2 = []
    #把文件中的每行字符变成列表格式
    for each_line1 in file1:
      list1.append(each_line1)
    for each_line2 in file2:
      list2.append(each_line2)
    a = 0
    print(len(list1))
    while True:
      if len(list1) > a:   #第a行小于列表所包含元素个数                     这里不能带等号,会越界
            if list1 == list2:   #如果file1第a行等于file2第a行
                a += 1                                                      #这里加上a+=1 不然会死循环
                continue
            else:                              #否则打印第a行不一样
                print('第',a,'行不一样')
                a += 1
      else:                      #否则退出循环
            break

f1 = input("请输入需要比较的头一个文件名:")
f2 = input("请输入需要比较的另一个文件名:")

file1 = open(f1)
file2 = open(f2)

differ(file1,file2)

昨非 发表于 2020-11-5 12:43:19

改一下第12行和第14行就好了,
满意的话记得给个最佳答案哈
页: [1]
查看完整版本: 各位大佬帮帮忙