鱼C论坛

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

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

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

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

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

x
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[1])
    a = 0
    while True:
        if len(each_line1) >= a:   #第a行小于等于列表所包含元素个数
            if each_line1[a] == each_line2[a]:   #如果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里面的循环为什么不执行?


最佳答案
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[a] == list2[a]:   #如果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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-4 22:27:57 | 显示全部楼层
哪里有偏差?
你预想中是什么样的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-4 22:29:31 | 显示全部楼层
而且,eachfile1是for循环的局部变量
在外面用是没有定义的啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[k] != list2[k] :
            print('第' , k + 1 , '行不同')
            c += 1
    if not c : print('两个文件完全相同!')

file1 , file2 = input("请输入需要比较的头一个文件名:") . strip() , input("请输入需要比较的另一个文件名:") . strip()
differ(file1 , file2)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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[a] == list2[a]:   #如果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里面的程序为什么不循环?麻烦您啦


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[a] == list2[a]:   #如果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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-5 12:43:19 | 显示全部楼层
改一下第12行和第14行就好了,
满意的话记得给个最佳答案哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-18 00:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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