鱼C论坛

 找回密码
 立即注册
查看: 1810|回复: 5

[已解决]作业第29讲,第一题有点看不懂,求大神解答

[复制链接]
发表于 2020-11-17 06:08:17 | 显示全部楼层 |阅读模式

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

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

x
第一题07-11行代码看不懂。确切的说是不明白第10行,line1和line2的对比机制。
问题一:07行代码运行的时候,是把f1(也就是file1)中的每一行都单独的拿出来,赋值给line1,这样理解对吗?
问题二:08行代码运行出来,怎么确定他读取的是f2的哪一行?对readline()机制不明白,求讲解。
问题三:第10行代码,line1和line2的值分别是什么类型,列表还是字符串?
问题四:他们怎么完成file1和file2第一行读取对比完进入file1的第二行和file2的第二行进行对比?file1还能理解,是因为有for语句,一次一次的读取每一行,但是file2就不是很理解了。
最佳答案
2020-11-17 09:07:46
=====问题一:07行代码运行的时候,是把f1(也就是file1)中的每一行都单独的拿出来,赋值给line1,这样理解对吗?
是的

=====问题二:08行代码运行出来,怎么确定他读取的是f2的哪一行?对readline()机制不明白,求讲解。
File.readline()函数,第1次用的时候,默认偏移是在0(文件的最左上角),运行一次读取1行(包括行末的换行符)
读取完偏移在文件中的位置就到了第2行最顶端。例如文件内容:
     123
     456
第一次File.readline()的时候,偏移在1的最左边,因此读取出来的是123+'\n',再运行File.readline()读取456+'\n'
另外File.readline(x),表示读取行中的前x个字符,返回字符串。偏移可以用file.seek()设置,file.tell()读取

=====问题三:第10行代码,line1和line2的值分别是什么类型,列表还是字符串?
字符串

=====问题四:他们怎么完成file1和file2第一行读取对比完进入file1的第二行和file2的第二行进行对比?file1还能理解,是因为有for语句,一次一次的读取每一行,但是file2就不是很理解了。
见问题2的解答咯,运行一次File.readline()函数就读取一行,偏移位置变到下一行了
微信截图_20201117055404.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-11-17 06:09:48 | 显示全部楼层
把完整代码截图放上
微信截图_20201117060927.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-17 09:00:21 | 显示全部楼层
...问题有点多。
1、一个对集合的遍历的方法,枚举所有的成员。可以这么理解,f1的成员读取出来给line1
2、readline内部应该是一个流的机制,一节一节的读取,有一个当前位置的标记,当前位置读取一行,把坐标设置到下一个位置,所以可以一只读取f2的内容知道完成。
3、比较的时候编译器回判定能不能处理,可以处理的回自动匹配到响应类型处理,这里是字符串。
4、这个回到了第二个问题了,因为file2,readline方法,类似于读一个记事本,每次读取里面的一行数据,直到读到最后。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-17 09:07:46 | 显示全部楼层    本楼为最佳答案   
=====问题一:07行代码运行的时候,是把f1(也就是file1)中的每一行都单独的拿出来,赋值给line1,这样理解对吗?
是的

=====问题二:08行代码运行出来,怎么确定他读取的是f2的哪一行?对readline()机制不明白,求讲解。
File.readline()函数,第1次用的时候,默认偏移是在0(文件的最左上角),运行一次读取1行(包括行末的换行符)
读取完偏移在文件中的位置就到了第2行最顶端。例如文件内容:
     123
     456
第一次File.readline()的时候,偏移在1的最左边,因此读取出来的是123+'\n',再运行File.readline()读取456+'\n'
另外File.readline(x),表示读取行中的前x个字符,返回字符串。偏移可以用file.seek()设置,file.tell()读取

=====问题三:第10行代码,line1和line2的值分别是什么类型,列表还是字符串?
字符串

=====问题四:他们怎么完成file1和file2第一行读取对比完进入file1的第二行和file2的第二行进行对比?file1还能理解,是因为有for语句,一次一次的读取每一行,但是file2就不是很理解了。
见问题2的解答咯,运行一次File.readline()函数就读取一行,偏移位置变到下一行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-17 17:59:58 | 显示全部楼层
supperlittX 发表于 2020-11-17 09:00
...问题有点多。
1、一个对集合的遍历的方法,枚举所有的成员。可以这么理解,f1的成员读取出来给line1
2 ...

明白了,其实是题和解答的不严谨,比如,一行里面有两个三个不一样的,用for语句可能统计不到。这道题我放弃了。
也有大神告诉我是,每次读取f1的一行,和f2的每一行,依次对比,然后我豁然开朗。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-17 18:01:44 | 显示全部楼层
笨鸟学飞 发表于 2020-11-17 09:07
=====问题一:07行代码运行的时候,是把f1(也就是file1)中的每一行都单独的拿出来,赋值给line1,这样理解对 ...

谢谢大佬了,明白。总觉得,这个题的答案和问题不匹配,只是实现了部分功能,而且如果一行有好几个不同的地方,根据for语句的机制,可能一行不管一个不同还是多个不同,都会之记录一次。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-21 19:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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