天天看點

兩個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