鱼C论坛

 找回密码
 立即注册
查看: 2518|回复: 10

请问下同样的程序,实现方法不一样,差异化在哪里

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

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

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

x
file_one_name = input('请输入第一个文件地址')
file_tow_name = input('请输入另一个文件地址')

def open_file(file_one,file_tow):
    file_1 = open(file_one)
    file_2 = open(file_tow)
    file_contrast(file_1,file_2)
def file_contrast(file_name_1,file_name_2):
    line = 0
    count = []
    #以下变量用于统计出现x次不同
    temp = 0
    for each_name_1 in file_name_1:
        for each_name_2 in file_name_2:
            if each_name_1 == each_name_2:
                line += 1
                continue
            else:
                #统计不同次数
                temp += 1
                #————————————
                line += 1
                count.append(line)
    if each_name_1 == '' or each_name_2:
        temp += 1
        line += 1
        count.append(line)

    print('两个文件有%d次不同'% (temp))
    print(line)
    for each in count:
        print('第%d行不同'%(each))
open_file(file_one_name,file_tow_name)

-------------------------------------------以上我写的-------------------------‘

-------------------------------------------以下小甲鱼的-------------------------
def file_compare(file1, file2):
    f1 = open(file1)
    f2 = open(file2)
    count = 0 # 统计行数
    differ = [] # 统计不一样的数量

    for line1 in f1:
        line2 = f2.readline()
        count += 1
        if line1 != line2:
            differ.append(count)

    f1.close()
    f2.close()
    return differ

file1 = input('请输入需要比较的头一个文件名:')
file2 = input('请输入需要比较的另一个文件名:')

differ = file_compare(file1, file2)

if len(differ) == 0:
    print('两个文件完全一样!')
else:
    print('两个文件共有【%d】处不同:' % len(differ))
    for each in differ:
        print('第 %d 行不一样' % each)


希望大家能评价下我的代码哪里可以改进的,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-21 22:45:54 | 显示全部楼层
你的程序根本就没有实现该功能吧。。
比较两个文件,你用双层循环?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-21 22:57:45 | 显示全部楼层
sunrise085 发表于 2020-9-21 22:45
你的程序根本就没有实现该功能吧。。
比较两个文件,你用双层循环?

D:\py文件\venv\Scripts\python.exe D:/py文件/求助解答文件/比较用户文件输入不同点.py
请输入第一个文件地址D:\\boy_1.txt
请输入另一个文件地址D:\\boy_2.txt
两个文件有5次不同
5
第1行不同
第2行不同
第3行不同
第4行不同
第5行不同
这是我的代码运行结果没错啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-21 22:58:38 | 显示全部楼层
sunrise085 发表于 2020-9-21 22:45
你的程序根本就没有实现该功能吧。。
比较两个文件,你用双层循环?

boy_1文件内容:
咦??
。。。。。。
然后呢?
呃。。。。。。你真牛!
下次有人想调戏你我不阻止~
boy_2文件内容
哦?
哈哈哈,我看到丫,我还发微博了呢~
哟西~
T_T
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-21 23:19:41 | 显示全部楼层
qin_yin 发表于 2020-9-21 22:58
boy_1文件内容:
咦??
。。。。。。

那你弄两个基本上一样的文件,试试。
例如:只有第2行不一样的两个文件。
你再看看结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-21 23:23:57 | 显示全部楼层
谢提醒
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-21 23:30:11 | 显示全部楼层
sunrise085 发表于 2020-9-21 23:19
那你弄两个基本上一样的文件,试试。
例如:只有第2行不一样的两个文件。
你再看看结果

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

使用道具 举报

发表于 2020-9-21 23:30:39 | 显示全部楼层

你的双for循环,其实是把第一个文件的第一行和第二盒文件的所有航进行了一次比较
当第一个文件读到其余行的时候,其实第二个文件已经读完了,已经不可能再进入内层for循环了。
所以即使你拿两个完全相同的文件,也会报出从第二行开始每一行都不一样。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-21 23:49:17 | 显示全部楼层
sunrise085 发表于 2020-9-21 23:30
你的双for循环,其实是把第一个文件的第一行和第二盒文件的所有航进行了一次比较
当第一个文件读到其余 ...

我发现了小甲鱼的代码有个问题,不知道是不是没有考虑这一点,如果for循环的那个文件1读取完了,就不会继续比较了,但是第是文件2还没有读完,如果文件1和文件2交换一个位置,就可以继续比较,得到结果也和原来的不同
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-22 08:25:15 | 显示全部楼层
qin_yin 发表于 2020-9-21 23:49
我发现了小甲鱼的代码有个问题,不知道是不是没有考虑这一点,如果for循环的那个文件1读取完了,就不会继 ...

其实这个也不算是个问题吧。比较两个文件,肯定有主有次,会说第一个文件有哪几行和第二个文件不同。
若第一个文件短,外循环结束了,第二个文件还有内容,那也就这样了,总不能说第一个文件没有的行与迭戈文件不一样吧。
若第一个文件长,当第二个文件结束的时候第一个文件还有内容,那剩余的内容肯定是和第二个文件不一样的。
在计算机中,比较两个文件必须一个是主要文件一个是次要文件。就像office word比较两个文件一样,也是选中一个为主文件,拿另一个和它比较。这才是正常的计算机逻辑。
如果你认为这是个问题,那就是问题吧。用程序去解决也是可以的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-22 10:38:17 | 显示全部楼层
文件用完了记得close是个好习惯
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-18 14:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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