android Monkeyrunner:Python語法知識學習(for,while,if用法例項)
#!/usr/bin/python
# Filename: if.py number =
23
guess =
int
(
raw_input
(
'Enter an integer : '
))
if
guess == number:
print
'Congratulations, you guessed it.'
# New block starts here
print
"(but you do not win any prizes!)"
# New block ends here
elif
guess < number:
print
'No, it is a little higher than that'
# Another block
# You can do whatever you want in a block ...
else
:
print
'No, it is a little lower than that'
# you must have guess > number to reach here
print
'Done'
# This last statement is always executed, after the if statement is executed
輸出
$ python if.py
Enter an integer : 50
No, it is a little lower than that
Done
$ python if.py
Enter an integer : 22
No, it is a little higher than that
Done
$ python if.py
Enter an integer : 23
Congratulations, you guessed it.
(but you do not win any prizes!)
Done
它如何工作
在這個程式中,我們從使用者處得到猜測的數,然後檢驗這個數是否是我們手中的那個。我們把變數number
設定為我們想要的任何整數,在這個例子中是23
。然後,我們使用raw_input()
函式取得使用者猜測的數字。函式只是重用的程式段。我們將在下一章學習更多關於函式的知識。
我們為內建的raw_input
函式提供一個字串,這個字串被列印在螢幕上,然後等待使用者的輸入。一旦我們輸入一些東西,然後按回車鍵之後,函式返回輸入。對於raw_input
函式來說是一個字串。我們通過int
把這個字串轉換為整數,並把它儲存在變數guess
中。事實上,int
是一個類,不過你想在對它所需瞭解的只是它把一個字串轉換為一個整數(假設這個字串含有一個有效的整數文字資訊)。
接下來,我們將使用者的猜測與我們選擇的數做比較。如果他們相等,我們列印一個成功的訊息。注意我們使用了縮排層次來告訴Python每個語句分別屬於哪一個塊。這就是為什麼縮排在Python如此重要的原因。我希望你能夠堅持“每個縮排層一個製表符”的規則。你是這樣的嗎?
注意if
語句在結尾處包含一個冒號——我們通過它告訴Python下面跟著一個語句塊。
然後,我們檢驗猜測是否小於我們的數,如果是這樣的,我們告訴使用者它的猜測大了一點。我們在這裡使用的是elif
從句,它事實上把兩個相關聯的if else-if else
語句合併為一個if-elif-else
語句。這使得程式更加簡單,並且減少了所需的縮排數量。
elif
和else
從句都必須在邏輯行結尾處有一個冒號,下面跟著一個相應的語句塊(當然還包括正確的縮排)。
你也可以在一個if塊中使用另外一個if
語句,等等——這被稱為巢狀的if
語句。
記住,elif
和else
部分是可選的。一個最簡單的有效if
語句是:
if
True
:
print
'Yes, it is true'
在Python執行完一個完整的if
語句以及與它相關聯的elif
和else
從句之後,它移向if
語句塊的下一個語句。在這個例子中,這個語句塊是主塊。程式從主塊開始執行,而下一個語句是print 'Done'
語句。在這之後,Python看到程式的結尾,簡單的結束執行。
儘管這是一個非常簡單的程式,但是我已經在這個簡單的程式中指出了許多你應該注意的地方。所有這些都是十分直接了當的(對於那些擁有C/C++背景的使用者來說是尤為簡單的)。它們在開始時會引起你的注意,但是以後你會對它們感到熟悉、“自然”。
給C/C++程式設計師的註釋
在Python中沒有switch
語句。你可以使用if..elif..else
語句來完成同樣的工作(在某些場合,使用字典會更加快捷。)
while語句
只要在一個條件為真的情況下,while
語句允許你重複執行一塊語句。while
語句是所謂 迴圈 語句的一個例子。while
語句有一個可選的else
從句。
#!/usr/bin/python
# Filename: while.pynumber =
23
running =
True
while
running:
guess =
int
(
raw_input
(
'Enter an integer : '
))
if
guess == number:
print
'Congratulations, you guessed it.'
running =
False
# this causes the while loop to stop
elif
guess < number:
print
'No, it is a little higher than that'
else
:
print
'No, it is a little lower than that'
else
:
print
'The while loop is over.'
# Do anything else you want to do here
print
'Done'
for迴圈
for..in
是另外一個迴圈語句,它在一序列的物件上 遞迴 即逐一使用佇列中的每個專案。我們會在後面的章節中更加詳細地學習序列。
#!/usr/bin/python
# Filename: for.pyfor
i
in
range
(
1
,
5
):
print
i
else
:
print
'The for loop is over'
輸出
$ python for.py
1
2
3
4
The for loop is over
它如何工作
在這個程式中,我們列印了一個 序列 的數。我們使用內建的range
函式生成這個數的序列。
我們所做的只是提供兩個數,range
返回一個序列的數。這個序列從第一個數開始到第二個數為止。例如,range(1,5)
給出序列[1, 2, 3, 4]
。預設地,range
的步長為1。如果我們為range
提供第三個數,那麼它將成為步長。例如,range(1,5,2)
給出[1,3]
。記住,range
向上 延伸到第二個數,即它不包含第二個數。
for
迴圈在這個範圍內遞迴——for i in range(1,5)
等價於for i in [1, 2, 3, 4]
,這就如同把序列中的每個數(或物件)賦值給i,一次一個,然後以每個i
的值執行這個程式塊。在這個例子中,我們只是列印i的值。
記住,else
部分是可選的。如果包含else,它總是在for
迴圈結束後執行一次,除非遇到break語句。
記住,for..in
迴圈對於任何序列都適用。這裡我們使用的是一個由內建range
函式生成的數的列表,但是廣義說來我們可以使用任何種類的由任何物件組成的序列!我們會在後面的章節中詳細探索這個觀點。
給C/C++/Java/C#程式設計師的註釋
Python的for
迴圈從根本上不同於C/C++的for
迴圈。C#程式設計師會注意到Python的for
迴圈與C#中的foreach
迴圈十分類似。Java程式設計師會注意到它與Java 1.5中的for (int i : IntArray)
相似。
在C/C++中,如果你想要寫for (int i = 0; i < 5; i++)
,那麼用Python,你寫成for i in range(0,5)
。你會注意到,Python的for
迴圈更加簡單、明白、不易出錯。
............................................................................
輸出
$ python while.py
Enter an integer : 50
No, it is a little lower than that.
Enter an integer : 22
No, it is a little higher than that.
Enter an integer : 23
Congratulations, you guessed it.
The while loop is over.
Done