實驗目标如圖所示,程式也很簡單
<a href="http://s4.51cto.com/wyfs02/M01/78/7C/wKioL1Z-BUrjYBi1AACzg40oEL4664.png" target="_blank"></a>
1
2
3
4
5
6
7
8
9
<code>while</code> <code>1</code><code>:</code>
<code> </code><code>try</code><code>:</code>
<code> </code><code>AAA</code><code>=</code><code>int</code><code>(</code><code>input</code><code>(</code><code>"請輸入一個整數:"</code><code>))</code>
<code> </code><code>print</code><code>(</code><code>"Good!"</code><code>)</code>
<code> </code><code>break</code>
<code> </code><code>except</code> <code>ValueError as reason:</code>
<code> </code><code>print</code><code>(</code><code>"出錯了,您出錯的原因是:"</code><code>+</code><code>str</code><code>(reason))</code>
<code> </code><code>print</code><code>(</code><code>"請重新輸入:"</code><code>)</code>
<code> </code><code>continue</code>
這裡要注意以下幾點:
1)try語句和if語句的差別,try語句後接“要發生的事情”,而if語句是“先有語句,然後if/else”。
2)對于python 3.x的同好,while 1和while True的速度是一樣的,但是在python 2.x裡,while True是相比較要慢一丢丢,因為python 2.x裡True不是關鍵詞,是可以指派的,這樣程式每次啟動都會先檢查True/False是不是一個變量,這樣會耽誤那麼半秒的時間。So,為了多省那麼幾秒鐘,直接就while 1吧。
===================================分割線=========================================
這裡有一個重要補充!!
try語句是一個try搭配一個動作,然後except一下,然後try搭配另一個動作,再except一下。如果一個try搭配好幾十個動作,但是這好幾十個動作裡有一個出了錯,導緻系統卡死,單純的依靠finally是沒法補救的,因為之前的動作都已經打開了。
<code>for</code> <code>instance:</code>
<code> </code><code>try</code><code>:</code>
<code> </code><code>f</code><code>=</code><code>open</code><code>(</code><code>"E:/Python/AAA/12345.txt"</code><code>)</code>
<code> </code><code>do something</code>
<code> </code><code>except</code><code>(對應的Error):</code>
<code> </code><code>finally</code><code>:</code>
<code> </code><code>f.close()</code>
這個程式就是很标準的案例,雖然很常見但是他是錯誤的。因為一個try裡有兩個動作:“打開檔案”和“do something”,若是do something出了問題,可以f.close()儲存,但是若是在"打開檔案"出了問題,如何F.close()?因為檔案壓根就沒打開!
是以正确的代碼如下:
10
11
<code>try</code><code>:</code>
<code> </code><code>f </code><code>=</code> <code>open</code><code>(</code><code>'xxx'</code><code>)</code>
<code>except</code><code>:</code>
<code> </code><code>print</code> <code>'fail to open'</code>
<code> </code><code>exit(</code><code>-</code><code>1</code><code>)</code>
<code> </code><code>do something</code>
<code>finally</code><code>:</code>
<code> </code><code>f.close()</code>
<code></code>
<a href="http://down.51cto.com/data/2367213" target="_blank">附件:http://down.51cto.com/data/2367213</a>
本文轉自 蘇幕遮618 51CTO部落格,原文連結:http://blog.51cto.com/chenx1242/1728080