1. 程式人生 > >python學習(3)- If, while, break, contiune

python學習(3)- If, while, break, contiune

1. If 控制語句 : 注意If 和 elif ,else後面的冒號。

age = 3
if age >= 18:
    print('adult')
elif age >= 6:
    print('teenager')
else:
    print('kid')

if語句執行有個特點,它是從上往下判斷,如果在某個判斷上是True,把該判斷對應的語句執行後,就忽略掉剩下的elifelse,所以,請測試並解釋為什麼下面的程式列印的是teenager

age = 20
if age >= 6:
    print('teenager')
elif age >= 18:
    print('adult')
else:
    print('kid')

再議 input

input()讀取使用者的輸入,這樣可以自己輸入,程式執行得更有意思:

birth = input('birth: ')
if birth < 2000:
    print('00前')
else:
    print('00後')

輸入1982,結果報錯:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unorderable types: str() > int()

這是因為input()返回的資料型別是str

str不能直接和整數比較,必須先把str轉換成整數。Python提供了int()函式來完成這件事情:

s = input('birth: ')
birth = int(s)
if birth < 2000:
    print('00前')
else:
    print('00後')

再次執行,就可以得到正確地結果。但是,如果輸入abc呢?又會得到一個錯誤資訊:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'abc'

原來int()函式發現一個字串並不是合法的數字時就會報錯,程式就退出了。

2. Python迴圈

Python的迴圈有兩種,一種是for...in迴圈,依次把list或tuple中的每個元素迭代出來,看例子:

names = ['Michael', 'Bob', 'Tracy']
for name in names:
    print(name)

提供一個range()函式,可以生成一個整數序列,再通過list()函式可以轉換為list。比如range(5)生成的序列是從0開始小於5的整數:

>>> list(range(5))
[0, 1, 2, 3, 4]

range(101)就可以生成0-100的整數序列,計算如下:

# -*- coding: utf-8 -*-

sum = 0

for x in range(101):

     sum = sum + x

     print(sum)

二種迴圈是while迴圈,只要條件滿足,就不斷迴圈,條件不滿足時退出迴圈。比如我們要計算100以內所有奇數之和,可以用while迴圈實現:

sum = 0
n = 99
while n > 0:
    sum = sum + n
    n = n - 2
print(sum)

在迴圈內部變數n不斷自減,直到變為-1時,不再滿足while條件,迴圈退出。

Break 提前結束迴圈

n = 1
while n <= 100:
    if n > 10: # 當n = 11時,條件滿足,執行break語句
        break # break語句會結束當前迴圈
    print(n)
    n = n + 1
print('END')

n = 0
while n < 10:
    n = n + 1
    if n % 2 == 0: # 如果n是偶數,執行continue語句
        continue # continue語句會直接繼續下一輪迴圈,後續的print()語句不會執行
    print(n)

執行上面的程式碼可以看到,列印的不再是1~10,而是1,3,5,7,9。

可見continue的作用是提前結束本輪迴圈,並直接開始下一輪迴圈。

break語句可以在迴圈過程中直接退出迴圈,而continue語句可以提前結束本輪迴圈,並直接開始下一輪迴圈。這兩個語句通常都必須配合if語句使用。

要特別注意,不要濫用breakcontinue語句。breakcontinue會造成程式碼執行邏輯分叉過多,容易出錯。大多數迴圈並不需要用到breakcontinue語句,上面的兩個例子,都可以通過改寫迴圈條件或者修改迴圈邏輯,去掉breakcontinue語句。

有些時候,如果程式碼寫得有問題,會讓程式陷入“死迴圈”,也就是永遠迴圈下去。這時可以用Ctrl+C退出程式,或者強制結束Python程序。