鱼C论坛

 找回密码
 立即注册
查看: 2610|回复: 6

[已解决]各位大佬帮帮忙

[复制链接]
发表于 2020-11-4 22:20:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. def differ(file1,file2):
  2.     list1 = []
  3.     list2 = []
  4.     #把文件中的每行字符变成列表格式
  5.     for each_line1 in file1:
  6.         list1.append(each_line1)
  7.     for each_line2 in file2:
  8.         list2.append(each_line2)
  9.     print(len(each_line1))
  10.     print(each_line1[1])
  11.     a = 0
  12.     while True:
  13.         if len(each_line1) >= a:   #第a行小于等于列表所包含元素个数
  14.             if each_line1[a] == each_line2[a]:   #如果file1第a行等于file2第a行
  15.                 continue
  16.             else:                                #否则打印第a行不一样
  17.                 print('第',a,'行不一样')
  18.                 a += 1
  19.         else:                      #否则退出循环
  20.             break

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

  23. file1 = open(f1)
  24. file2 = open(f2)

  25. differ(file1,file2)
复制代码




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


最佳答案
2020-11-5 12:42:41
DoubleS、Zhao 发表于 2020-11-5 11:41
我把while里面的each_line改了,我的问题是while里面的程序为什么不循环?麻烦您啦
  1. def differ(file1,file2):
  2.     list1 = []
  3.     list2 = []
  4.     #把文件中的每行字符变成列表格式
  5.     for each_line1 in file1:
  6.         list1.append(each_line1)
  7.     for each_line2 in file2:
  8.         list2.append(each_line2)
  9.     a = 0
  10.     print(len(list1))
  11.     while True:
  12.         if len(list1) > a:   #第a行小于列表所包含元素个数                       这里不能带等号,会越界
  13.             if list1[a] == list2[a]:   #如果file1第a行等于file2第a行
  14.                 a += 1                                                        #这里加上a+=1 不然会死循环
  15.                 continue
  16.             else:                                #否则打印第a行不一样
  17.                 print('第',a,'行不一样')
  18.                 a += 1
  19.         else:                      #否则退出循环
  20.             break

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

  23. file1 = open(f1)
  24. file2 = open(f2)

  25. differ(file1,file2)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-11-4 22:27:57 | 显示全部楼层
哪里有偏差?
你预想中是什么样的?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-4 22:29:31 | 显示全部楼层
而且,eachfile1是for循环的局部变量
在外面用是没有定义的啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-4 22:46:42 | 显示全部楼层
  1. #coding:gbk

  2. def differ(file1 , file2):
  3.     f1 , f2 = open(file1) , open(file2)
  4.     list1 , list2 = list(f1) , list(f2)
  5.     f1 . close()
  6.     f2 . close()
  7.     m1 , m2 = min((len(list1) , len(list2))) , max((len(list1) , len(list2)))
  8.     c = 0
  9.     for k in range(m1) :
  10.         if list1[k] != list2[k] :
  11.             print('第' , k + 1 , '行不同')
  12.             c += 1
  13.     if not c : print('两个文件完全相同!')

  14. file1 , file2 = input("请输入需要比较的头一个文件名:") . strip() , input("请输入需要比较的另一个文件名:") . strip()
  15. differ(file1 , file2)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-5 11:41:37 | 显示全部楼层
昨非 发表于 2020-11-4 22:27
哪里有偏差?
你预想中是什么样的?
  1. def differ(file1,file2):
  2.     list1 = []
  3.     list2 = []
  4.     #把文件中的每行字符变成列表格式
  5.     for each_line1 in file1:
  6.         list1.append(each_line1)
  7.     for each_line2 in file2:
  8.         list2.append(each_line2)
  9.     a = 0
  10.     while True:
  11.         if len(list1) >= a:   #第a行小于等于列表所包含元素个数
  12.             if list1[a] == list2[a]:   #如果file1第a行等于file2第a行
  13.                 continue
  14.             else:                                #否则打印第a行不一样
  15.                 print('第',a,'行不一样')
  16.                 a += 1
  17.         else:                      #否则退出循环
  18.             break

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

  21. file1 = open(f1)
  22. file2 = open(f2)

  23. differ(file1,file2)
复制代码


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


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-5 12:42:41 | 显示全部楼层    本楼为最佳答案   
DoubleS、Zhao 发表于 2020-11-5 11:41
我把while里面的each_line改了,我的问题是while里面的程序为什么不循环?麻烦您啦
  1. def differ(file1,file2):
  2.     list1 = []
  3.     list2 = []
  4.     #把文件中的每行字符变成列表格式
  5.     for each_line1 in file1:
  6.         list1.append(each_line1)
  7.     for each_line2 in file2:
  8.         list2.append(each_line2)
  9.     a = 0
  10.     print(len(list1))
  11.     while True:
  12.         if len(list1) > a:   #第a行小于列表所包含元素个数                       这里不能带等号,会越界
  13.             if list1[a] == list2[a]:   #如果file1第a行等于file2第a行
  14.                 a += 1                                                        #这里加上a+=1 不然会死循环
  15.                 continue
  16.             else:                                #否则打印第a行不一样
  17.                 print('第',a,'行不一样')
  18.                 a += 1
  19.         else:                      #否则退出循环
  20.             break

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

  23. file1 = open(f1)
  24. file2 = open(f2)

  25. differ(file1,file2)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-5 12:43:19 | 显示全部楼层
改一下第12行和第14行就好了,
满意的话记得给个最佳答案哈
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-29 04:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表