长岛冰茶不好喝 发表于 2020-11-17 06:08:17

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

第一题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 06:09:48

把完整代码截图放上

supperlittX 发表于 2020-11-17 09:00:21

...问题有点多。
1、一个对集合的遍历的方法,枚举所有的成员。可以这么理解,f1的成员读取出来给line1
2、readline内部应该是一个流的机制,一节一节的读取,有一个当前位置的标记,当前位置读取一行,把坐标设置到下一个位置,所以可以一只读取f2的内容知道完成。
3、比较的时候编译器回判定能不能处理,可以处理的回自动匹配到响应类型处理,这里是字符串。
4、这个回到了第二个问题了,因为file2,readline方法,类似于读一个记事本,每次读取里面的一行数据,直到读到最后。

笨鸟学飞 发表于 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()函数就读取一行,偏移位置变到下一行了

长岛冰茶不好喝 发表于 2020-11-17 17:59:58

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

明白了,其实是题和解答的不严谨,比如,一行里面有两个三个不一样的,用for语句可能统计不到。这道题我放弃了。
也有大神告诉我是,每次读取f1的一行,和f2的每一行,依次对比,然后我豁然开朗。

长岛冰茶不好喝 发表于 2020-11-17 18:01:44

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

谢谢大佬了,明白。总觉得,这个题的答案和问题不匹配,只是实现了部分功能,而且如果一行有好几个不同的地方,根据for语句的机制,可能一行不管一个不同还是多个不同,都会之记录一次。
页: [1]
查看完整版本: 作业第29讲,第一题有点看不懂,求大神解答