两个python程序的细节分析
这个程序,我第一次写是这样的:
1
2
3
4
5
6
|
name = input ( "请输入文件路径:" )
number = int ( input ( "请问要打印几行:" ))
f = open (name, "r" )
AAA = f.readlines()
for i 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 i in range (number):
AAA = f.readline()
print (AAA,end = " " )
|
本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1728958