本文是參照菜鳥教程的例子,並自己加以總結,主要是練習鞏固運算符的使用和理解,下面是每個類型的運算符的實例和概念介紹,做個記錄,方便日後回憶,查看
# !/usr/bin/env python
# -*- coding:utf8 -*-
# 運算符
a = 21
b = 10
print("算數運算符的結果爲:")
# <editor-fold desc="算數運算符概念">
# + 加 - 兩個對象相加 a + b 輸出結果 31
# - 減 - 得到負數或是一個數減去另一個數 a - b 輸出結果 -11
# * 乘 - 兩個數相乘或是返回一個被重複若干次的字符串 a * b 輸出結果 210
# / 除 - x 除以 y b / a 輸出結果 2.1
# % 取模 - 返回除法的餘數 b % a 輸出結果 1
# ** 冪 - 返回x的y次冪 a**b 爲10的21次方
# // 取整除 - 返回商的整數部分 9//2 輸出結果 4 , 9.0//2.0 輸出結果 4.0
# </editor-fold>
# <editor-fold desc="算數運算符">
# 加
c = a + b
print("1 - c 的值爲:", c)
# 減
c = a - b
print("2 - c 的值爲:", c)
# 乘
c = a * b
print("3 - c 的值爲:", c)
# 除
c = a / b
print("4 - c 的值爲:", c)
# 取餘
c = a % b
print("5 - c 的值爲:", c)
# 階乘
c = a ** b
print("6 - c 的值爲:", c)
# 取商
c = a // b
print("7 - c 的值爲:", c)
# </editor-fold>
print("\n比較運算符的結果爲:")
# <editor-fold desc="比較運算符概念">
# == 等於 - 比較對象是否相等 (a == b) 返回 False。
# != 不等於 - 比較兩個對象是否不相等 (a != b) 返回 True。
# > 大於 - 返回x是否大於y (a > b) 返回 False。
# < 小於 - 返回x是否小於y。所有比較運算符返回1表示真,返回0表示假。這分別與特殊的變量True和False等價。注意,這些變量名的大寫。 (a < b) 返回 True。
# >= 大於等於 - 返回x是否大於等於y。 (a >= b) 返回 False。
# <= 小於等於 - 返回x是否小於等於y。 (a <= b) 返回 True。
# </editor-fold>
# <editor-fold desc="比較運算符">
# 等於等於
if a == b:
print("1 - a 等於 b")
else:
print("1 - a 不等於 b")
# 不等於
if a != b:
print("2 - a 不等於 b")
else:
print("2 - a 等於 b")
# 小於
if a < b:
print("3 - a 小於 b")
else:
print("3 - a 大於等於 b")
# 大於
if a > b:
print("4 - a 大於 b")
else:
print("4 - a 小於等於 b")
# 小於等於
if a <= b:
print("5 - a 小於等於 b")
else:
print("5 - a 大於 b")
# 大於等於
if b >= a:
print("6 - b 大於等於 a")
else:
print("6 - b 小於 a")
# </editor-fold>
print("\n賦值運算符的結果爲:")
# <editor-fold desc="賦值運算符概念">
# = 簡單的賦值運算符 c = a + b 將 a + b 的運算結果賦值爲 c
# += 加法賦值運算符 c += a 等效於 c = c + a
# -= 減法賦值運算符 c -= a 等效於 c = c - a
# *= 乘法賦值運算符 c *= a 等效於 c = c * a
# /= 除法賦值運算符 c /= a 等效於 c = c / a
# %= 取模賦值運算符 c %= a 等效於 c = c % a
# **= 冪賦值運算符 c **= a 等效於 c = c ** a
# //= 取整除賦值運算符 c //= a 等效於 c = c // a
# </editor-fold>
# <editor-fold desc="賦值運算符">
c = a + b
print("1 - c 的值爲:", c)
# 等效於 c = c + a
c += a
print("2 - c 的值爲:", c)
# 等效於 c = c - a
c -= a
print("3 - c 的值爲:", c)
# 等效於 c = c * a
c *= a
print("4 - c 的值爲:", c)
# 等效於 c = c / a
c /= a
print("5 - c 的值爲:", c)
# 等效於 c = c % a
c %= a
print("6 - c 的值爲:", c)
# 等效於 c = c ** a
c **= a
print("7 - c 的值爲:", c)
# 等效於 c = c // a
c //= a
print("8 - c 的值爲:", c)
# </editor-fold>
print("\n位運算符的結果爲:")
# <editor-fold desc="位運算符概念">
# & 按位與運算符:參與運算的兩個值,如果兩個相應位都爲1,則該位的結果爲1,否則爲0 (a & b) 輸出結果 12 ,二進制解釋: 0000 1100
# | 按位或運算符:只要對應的二個二進位有一個爲1時,結果位就爲1。 (a | b) 輸出結果 61 ,二進制解釋: 0011 1101
# ^ 按位異或運算符:當兩對應的二進位相異時,結果爲1 (a ^ b) 輸出結果 49 ,二進制解釋: 0011 0001
# ~ 按位取反運算符:對數據的每個二進制位取反,即把1變爲0,把0變爲1。~x 類似於 -x-1 (~a ) 輸出結果 -61 ,二進制解釋: 1100 0011, 在一個有符號二進制數的補碼形式。
# << 左移動運算符:運算數的各二進位全部左移若干位,由"<<"右邊的數指定移動的位數,高位丟棄,低位補0。 a << 2 輸出結果 240 ,二進制解釋: 1111 0000
# >> 右移動運算符:把">>"左邊的運算數的各二進位全部右移若干位,">>"右邊的數指定移動的位數 a >> 2 輸出結果 15 ,二進制解釋: 0000 1111
# </editor-fold>
# <editor-fold desc="位運算符">
# 先將兩個數字轉換成二進制然後同位對比
# a 00010101
# b 00001010
# 按位與運算符:同爲1得1,否則爲0
c = a & b # 00000000
print("1 - c 的值爲:", c)
# 按位或運算符:有1則爲1,都爲0則爲0
c = a | b # 00011111
print("2 - c 的值爲:", c)
# 按位異或運算符:同爲1或同爲0,取0,不同則取1
c = a ^ b # 00011111
print("3 - c 的值爲:", c)
# 按位取反運算符:末位加1,並在最左邊添加負號 -
c = ~a # 00010110
print("4 - c 的值爲:", c)
# 左移動運算符:右邊的數字爲多少,左邊就捨棄多少位,然後再在末位補相同位數的0
c = a << 2 # 01010100
print("5 - c 的值爲:", c)
# 右移動運算符:右邊的數字爲多少,右邊就捨棄多少位,然後再在左邊補相同位數的0
c = a >> 2 # 00000101
print("6 - c 的值爲:", c)
# </editor-fold>
print("\n邏輯運算符的結果爲:")
# <editor-fold desc="邏輯運算符概念">
# and x and y 布爾"與" - 如果 x 爲 False,x and y 返回 False,否則它返回 y 的計算值。 (a and b) 返回 20。
# or x or y 布爾"或" - 如果 x 是 True,它返回 x 的值,否則它返回 y 的計算值。 (a or b) 返回 10。
# not not x 布爾"非" - 如果 x 爲 True,返回 False 。如果 x 爲 False,它返回 True。 not(a and b) 返回 False
# </editor-fold>
# <editor-fold desc="邏輯運算符">
if a and b:
print("1 - 變量 a 和 b 都爲 true")
else:
print("1 - 變量 a 和 b 有一個不爲 true")
if a or b:
print("2 - 變量 a 和 b 都爲 true,或其中一個變量爲 true")
else:
print("2 - 變量 a 和 b 都不爲 true")
if not (a and b):
print("3 - 變量 a 和 b 都爲 false,或其中一個變量爲 false")
else:
print("3 - 變量 a 和 b 都爲 true")
# </editor-fold>
print("\n成員運算符的結果爲:")
# <editor-fold desc="成員運算符概念">
# in 如果在指定的序列中找到值返回 True,否則返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
# not in 如果在指定的序列中沒有找到值返回 True,否則返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。
# </editor-fold>
# <editor-fold desc="成員運算符">
str1 = "王"
str2 = "豆豆"
if "豆" in str2:
print("Yes")
else:
print("NO")
if "豆" not in str2:
print("不在")
else:
print("在")
# </editor-fold>
print("\n身份運算符的結果爲:")
# <editor-fold desc="身份運算符概念">
# is is 是判斷兩個標識符是不是引用自一個對象 x is y, 類似 id(x) == id(y) , 如果引用的是同一個對象則返回 True,否則返回 False
# is not is not 是判斷兩個標識符是不是引用自不同對象 x is not y , 類似 id(a) != id(b)。如果引用的不是同一個對象則返回結果 True,否則返回 False。
# </editor-fold>
# <editor-fold desc="身份運算符">
if a is b:
print("1 - a 和 b 有相同的標識")
else:
print("1 - a 和 b 沒有相同的標識")
# 看兩個值是否引用自同一個對象
if a is not b:
print("2 - a 和 b 沒有相同的標識")
else:
print("2 - a 和 b 有相同的標識")
# </editor-fold>
print("\n身份運算符的結果爲:")
# <editor-fold desc="運算符優先級從上到下依次降低">
# ** 指數 (最高優先級)
# ~ + - 按位翻轉, 一元加號和減號 (最後兩個的方法名爲 +@ 和 -@)
# * / % // 乘,除,取模和取整除
# + - 加法減法
# >> << 右移,左移運算符
# & 位 'AND'
# ^ | 位運算符
# <= < > >= 比較運算符
# <> == != 等於運算符
# = %= /= //= -= += *= **= 賦值運算符
# is is not 身份運算符
# in not in 成員運算符
# and or not 邏輯運算符
# </editor-fold>
# <editor-fold desc="運算符優先級">
a = 20
b = 10
c = 15
d = 5
e = 0
e = (a + b) * c / d # ( 30 * 15 ) / 5
print("(a + b) * c / d 運算結果爲:", e)
e = ((a + b) * c) / d # (30 * 15 ) / 5
print("((a + b) * c) / d 運算結果爲:", e)
e = (a + b) * (c / d); # (30) * (15/5)
print("(a + b) * (c / d) 運算結果爲:", e)
e = a + (b * c) / d; # 20 + (150/5)
print("a + (b * c) / d 運算結果爲:", e)
# </editor-fold>