Python入門基礎——(章五 條件、循環及其他語句)

1.條件和條件語句

1.1 布爾值

用做表達式(如用if語句中的條件)時,下面的值都將被解釋器視為假:

False 、 None 、 0 、 " " 、 ( ) 、 [ ] 、 { }

標準值False 和None、各種類型(包括浮點數、負數等)的數值0、空序列(如空字符串、空元組和空列表)以及空映射(如空字典)都視為假。而其他各種值都被視為真,包括特殊值True。

其意思值為0(表示假)和1(表示真),True和False不過是0和1的別名。

>>> True

> True

>>> False

> False

>>> True == 1

> True

>>> False ==0

> True

>>> True  + False + 42

> 43


布爾值True和False屬於類型bool,而bool與list、str和tuple一樣,可用來轉換其他的值。

>>> bool('jack')

> True

>>> bool(42)

> True

>>> bool('')

> False

>>> bool(0)

> False

Python裡自動將值轉化成bool值


1.2 執行if語句內容

>>> num = 1

>>> if num ==1:

>>> print("hello world")

if和冒號之間的表達式為真!!!!!!,就執行後續的代碼(即print代碼),如果條件為假,就不執行。

注意!!!!!:應注意縮進行,if下面的代碼區應縮進4個空格,默認table為四個空格,在編寫代碼時空格鍵和table不要混合使用


1.3 else語句

else所起的作用為除if(如果)以外,還有其他選擇,else不是單獨的一部分,與if的語句是同一個部分。

>>> num =1 ###直觀一點

>>> if num = 2:

>>> print("hello")

>>> else:

>>> print("hello world")

此代碼的意思是,如果沒有執行第一個代碼塊(因為條件為假),將進入第二個代碼塊。

還有一種語句和它們很像,那就是條件表達式

status = "friend" if name.endswith("Jack") else "stranger"

如果為真則,結果是第一個提供值,如果為假就是第二個值stranger。

1.4 elif

要檢查多個條件,可使用elif 即else if的縮寫

>>> num = int(input('Number: '))

>>> if num > 0:

>>> print("正整數")

>>> elif num < 0:

>>> print("負整數")

>>> else:

>>> print("0")

用戶輸入一個數,如果輸入的是大於0的數則輸出正整數,如果輸入的是小於0的數,那麼就輸出負整數,剩下的只有等於0的數了,所以直接用else。


1.5 比較運算符

is: 相同運算符

>>> x = y = [1,2,3]

>>> z = [1,2,3]

>>> x == y

> True

>>>x == z

>True

>>> x is y

> True

>>> x is z

> False

is 檢查兩個元素是否相同(而不是相等)

x,y指向同一個列表而z指向另一個列表雖然相等,但不是同一個對象。


>>> x = [1,2,3]

>>> y = [1,2,3]

>>> x == y

> True

>>> x is y

> False

==用來檢查兩個對象是否相等,而is用來檢查兩個對象是否相同(是同一個對象)。


in :成員資格運算符

與其它比較運算符一樣,它也可用於條件表達式。

>>> name = input('What is your name?')

>>> if 's' in name:

>>> print('Yes')

>>> else:

>>> print('No')


2. while循環

>>> x = 1

>>> while x<=100:

>>> print(x)

>>> x+=1

以上用while打印1~100的數字,while和冒號之間的為條件滿足後(如x<=100)才執行代碼區的語句。


3. for循環

可迭代對象是用for循環進行遍歷的

>>> words = ['What','is','your','name']

>>> for word in words:#word:目標標識符,words:列表

>>> print(word)

>>> numbers = [0,1,2,3,4,5,6,7,8,9]

>>> for number in numbers:

>>> print(number)

迭代(也就是遍歷)特定範圍內的數是一種常見任務


4. 迭代

如有兩個列表

>>> names = ['jack','Ammy','Steven','Make']

>>> ages = [1,2,3,4]

如果要打印名字和對應的年齡

>>> for i in range(len(names)):

>>>     print(names[i],'is',ages[i],'years old')

i 是用作循環索引的變量的標準名稱,並行迭代工具是內置的zip,將兩個序列“縫合起來”,並返回一個元組組成的序列。返回值是一個適合迭代的對象。


要查看內容,是用list轉換為列表。

>>> list(zip(names,ages))

>>> [('jack',1),('Ammy',2),('Steven',3),(Make,4)]

“縫合”後,可在循環列表中將元組解包

>>> for names,ages in zip(names,ages)

>>> print(name ,'is',age,'years old')


zip可以縫合任意數量的序列,當序列長度不同時,函數zip將在最短的序列用完後停止“縫合”

>>> list(zip(range(5)),range(10000000000))

> [(0,0),(1,1),(2,2),(3,3),(4,4)]


5. 跳出循環

5.1 break

要跳出循環可以用break

>>> from math import sqrt

>>> for n in range(99,0,-1):

>>> root = sqrt(n)

>>> if root == int(root):

>>> print(n)

>>> break

以上是遍歷從100到1,找到一個可開平方的值,找到以後要跳出

range傳遞了第三個參數—步數,即序列中相鄰數的差。通過將步數調成負數,可讓range往下迭代


5.2 continue

結束當前迭代,並跳到下一次迭代的開頭,意味著跳過循環體中餘下的語句,但不結束循環。

>>> for x in seq:

>>> if x:continue:

>>> if y:continue:

>>> if z:continue:

>>>

>>> do_something()

>>> do_something_else()

>>> do_another_thing()

>>> etc()


其實一條語句就夠了

>>> for x in seq:

>>> if not(x or y or z):

>>> do_something()

>>> do_something_else()

>>> do_another_thing()

>>> etc()


分享到:


相關文章: