iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 7
0
Software Development

python 自學系列 第 7

python day7 (conditionals)

  • 分享至 

  • xImage
  •  

conditionals

條件控制有許多運算子.

> (Greater than)
< (Less than)
>= (Greater than or equal to)
<= (Less than or equal to)
== (Equal to)
!= (Not Equal to)
is (Identical Object)
is not (Not Identical Object)

大部分的型別都有定義好這些 function 可以使用.例如 string 或 int.

>>> name = 'Daniel'
>>> name == 'Daniel'
True
>>> name == 'Allen'
False
>>> 5 < 2
False

使用 dir 可以看到 name 這 string 物件裡有 __gt____lt____ge____le____eq____ne__這些方法定義了條件控制運算子的行為.

>>> dir(name)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

is 跟 is not 是用來判斷是不是同一個物件用的.

>>> user_name = name
>>> name is user_name
True
>>> name is not user_name
False

可以用 and、or、not 來組合條件控制這些運算字

>>> if name == 'Daniel' or name == 'Sam':
...  print('Hello {}'.format(name))
... else:
...  print('who are you')
...
Hello Daniel

in & not in

條件運算子可以用來控制程式的流程,但當要判斷的數量比較多時,可以查查看 python 是否有比較好的寫法,例如如果要判斷某個名字是不是在名字的清單裡,用 if 搭配 or 就要寫非常多行,但如果使用 in 來判斷就很方便了.

>>> user_names = {'Daniel','Allen','Sam','Jack'}
>>> print(name in user_names)
True

也可以使用 not in 來判斷是不是不存在清單裡.

>>> name = 'Ray'
>>> if name not in user_names:
...  print("name not in user_names")
...
name not in user_names

這樣寫法就簡潔很多.

>>> name = 'Sam'
>>> if name not in user_names:
...  print("name not in user_names")
... else:
...  print('{} in user_names'.format(name))
...
Sam in user_names

if、elif、else

pythone 的 else if 寫法是使用 elif.

>>> score = 80
>>> if score >= 90:
...  print('A')
... elif score >= 80:
...  print('B')
... else:
...  print('C')
...
B

python 的 if else 區塊是用空白或 tab 縮排來當作, if else 的程式區塊,所以當在if name == 'Daniel': 之後下段程式碼前面沒有空白或 tab 會造成 error.

>>> if score >= 90:
...  if name == 'Daniel':
...  print('A')
  File "<stdin>", line 3
    print('A')
        ^
IndentationError: expected an indented block

雖然一個空白似乎也可以過,但看到一些建議好像用四個空白或 tab 會比較好.

>>> if score >= 90:
...  if name == 'Daniel':
...   print('A')
...  else:
...   print('B')
... else:
...  print('C')
...
C

上一篇
python day6 (substring、booleans、None)
下一篇
python day8 (list)
系列文
python 自學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言