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()
閱讀更多 維也納的雨落 的文章