两个程序细节分析

这个程序,我第一次写是这样的:

1
2
3
4
5
6
name = input ( "请输入文件路径:" )
number = int ( input ( "请问要打印几行:" ))
f = open (name, "r" )
AAA = f.readlines()
for  in  range (number):
     print (AAA)

非常直观的思路,有什么写什么,从上倒下的写作方式。

后来发现这个程序运行的时候,假如在number的地方输入5,输出结果是把整个文章反复了5遍,而不是打印出前五行。

于是知道这里是.readlines()和.readline()的区别,前者是通篇以一个列表的形式打印出来,比如[line1,line2,...lineN],而后者是只打印第一句话。

更改成.readline()之后,再次启动,选择好文件路径和行数,发现输出结果是打印了5遍文章的第一句话。这回又是什么原因呢?

查了一圈,发现是AAA=f.readline(),这句话不应该放在for...in...外面,放外面的下场就是“先读取整篇文章第一句话”,然后反复重复i次。而调换到for...in...里面的话,就是打印出来整篇文章的前i句话。

正确的程序如下:

1
2
3
4
5
6
name = input ( "请输入文件路径:" )
number = int ( input ( "请问要打印几行:" ))
f = open (name, "r" )
for  in  range (number):
     AAA = f.readline()
     print (AAA,end = " " )