天天看点

两个python程序的细节分析

两个python程序的细节分析

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

1

2

3

4

5

6

<code>name</code><code>=</code><code>input</code><code>(</code><code>"请输入文件路径:"</code><code>)</code>

<code>number</code><code>=</code><code>int</code><code>(</code><code>input</code><code>(</code><code>"请问要打印几行:"</code><code>))</code>

<code>f</code><code>=</code><code>open</code><code>(name,</code><code>"r"</code><code>)</code>

<code>AAA</code><code>=</code><code>f.readlines()</code>

<code>for</code> <code>i </code><code>in</code> <code>range</code><code>(number):</code>

<code>    </code><code>print</code><code>(AAA)</code>

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

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

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

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

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

正确的程序如下:

<code>    </code><code>AAA</code><code>=</code><code>f.readline()</code>

<code>    </code><code>print</code><code>(AAA,end</code><code>=</code><code>" "</code><code>)</code>

 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1728958