鱼C论坛

 找回密码
 立即注册
查看: 759|回复: 2

[已解决]python 零基础29章第一题。

[复制链接]
发表于 2019-3-16 10:04:24 | 显示全部楼层 |阅读模式

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

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

x
题目要求比较两个文件的区别,答案代码如下:

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)

我比较有疑问的就是用红字标出来那一栏:
line2 = f2.readline()
为什么每次for循环line1时,line2会跟着一起循环读出对应f2的行数,而不是每次重复读出 f2的第0行?是什么使得line2跟着line1循环?
最佳答案
2019-3-16 10:16:11
readline会移动f2的文件指针
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-3-16 10:16:11 | 显示全部楼层    本楼为最佳答案   
readline会移动f2的文件指针
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-16 10:25:12 | 显示全部楼层
本帖最后由 jackz007 于 2019-3-16 10:33 编辑

      for line1 in f1:  是利用循环逐行读取文件 f1 内容直到结束,逐行读取的意思当然是每次读取 1 行,line2 = f2.readline() 的作用也是从文件 f2 读取 1 行内容,并带动文件指针向后移动,下次执行将读取到下一行的内容。在整个程序中,读取 f1 的 for 循环起驱动的作用。
      能把 f2.readline() 放进逐行读取 f1 的循环里面有一个重要前提,那就是两个文件的行数必须是一样多,特定情况下,如果 f2 的行数少于 f1 程序运行将出现异常。
      
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-22 03:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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