1. 程式人生 > >Python【運算子】--02

Python【運算子】--02

Python 運算子

什麼是運算子?

舉個簡單的例子 4 +5 = 9 。 例子中,4 和 5 被稱為運算元,"+" 稱為運算子

Python語言支援以下型別的運算子:

算術運算子

比較(關係)運算子

賦值運算子

邏輯運算子

位運算子

成員運算子

身份運算子

運算子優先順序

Python算術運算子

 假設變數: a=10,b=20:(加(+),減(-),乘(*),除(/)略去)

運算子 描述 例項
% 取模 - 返回除法的餘數 b % a 輸出結果 0
** 冪 - 返回x的y次冪 當b = 3時,a**b 為10的3次方, 輸出結果 1000
// 取整除 - 返回商的整數部分(向下取整) 9//2 輸出結果 4 , 9.0//2.0 輸出結果 4.0
a = 21
b = 10
c = 0

c = a / b
print "c 的值為:", c 
 
c = a % b
print "c 的值為:", c
 
# 修改變數 a 、b 、c
a = 2
b = 3
c = a**b 
print "c 的值為:", c
 
a = 11
b = 5
c = a//b 
print "c 的值為:", c

輸出結果:
c 的值為: 2.1
c 的值為: 1
c 的值為: 8
c 的值為: 2 

Python比較運算子

假設變數a為10,變數b為20,這裡 等於(==)、大於(>)、小於(<)、大於等於(>=)、小於等於(<=)省略。

運算子 描述 例項
!= 不等於 -- 比較兩個物件是否不相等 (a != b) 返回 true.
<> 不等於 -- 比較兩個物件是否不相等 (a <> b) 返回 true。這個運算子類似 != 。
< 小於 -- 返回x是否小於y。所有比較運算子返回1表示真,返回0表示假。這分別與特殊的變數True和False等價。 (a < b) 返回 true。

Python賦值運算子

以下假設變數a=21,變數b=10,c=31:省略(=)、(-=)。

運算子 描述 例項 輸出結果
+= 加法賦值運算子 c += a 等效於 c = c + a c 的值為: 52
*= 乘法賦值運算子 c *= a 等效於 c = c * a c 的值為: 1092 
/= 除法賦值運算子 c /= a 等效於 c = c / a c 的值為: 52 
%= 取模賦值運算 c %= a 等效於 c = c % a c 的值為: 10
**= 冪賦值運算 c **= a 等效於 c = c ** a 當a = 4時,c 的值為:10000
//= 取整除賦值運算 c //= a 等效於 c = c // a c = 10000,a = 21 ,最終值為:476
a = 21
b = 10
c = 0
 
c = a + b
print "1 - c 的值為:", c
 
c += a
print "2 - c 的值為:", c 
 
c *= a
print "3 - c 的值為:", c 
 
c /= a 
print "4 - c 的值為:", c 
 
c = 2
c %= a
print "5 - c 的值為:", c
 
c **= a
print "6 - c 的值為:", c
 
c //= a
print "7 - c 的值為:", c

以上例項輸出結果:

1 - c 的值為: 31
2 - c 的值為: 52
3 - c 的值為: 1092
4 - c 的值為: 52
5 - c 的值為: 2
6 - c 的值為: 2097152
7 - c 的值為: 99864

Python位運算子

按位運算子是把數字看作二進位制來進行計算的。Python中的按位運演算法則如下:

運算子 描述 例項
& 按位與運算符:參與運算的兩個值,如果兩個相應位都為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

下表中變數 a 為 60,b 為 13,二進位制格式如下:

a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100

a|b = 0011 1101

a^b = 0011 0001

~a  = 1100 0011
a = 60            # 60 = 0011 1100 
b = 13            # 13 = 0000 1101 
c = 0
 
c1 = a & b;        # 12 = 0000 1100
print "c1 的值為:", c1
 
c2 = a | b;        # 61 = 0011 1101 
print "c2 的值為:", c2
 
c3 = a ^ b;        # 49 = 0011 0001
print "c3 的值為:", c3
 
c4 = ~a;           # -61 = 1100 0011
print "c4 的值為:", c4
 
c5 = a << 2;       # 240 = 1111 0000
print "c5 的值為:", c5
 
c6 = a >> 2;       # 15 = 0000 1111
print "c6 的值為:", c6

以上例項輸出結果:

c1 的值為: 12
c2 的值為: 61
c3 的值為: 49
c4 的值為: -61
c5 的值為: 240
c6 的值為: 15

Python邏輯運算子

Python語言支援邏輯運算子,以下假設變數 a 為 10, b為 20:

運算子 邏輯表示式 描述 例項
and x and y 布林"與" - 如果 x 為 False,x and y 返回 False,否則它返回 y 的計算值。 (a and b) 返回 20。
or x or y 布林"或" - 如果 x 是非 0,它返回 x 的值,否則它返回 y 的計算值。 (a or b) 返回 10。
not not x 布林"非" - 如果 x 為 True,返回 False 。如果 x 為 False,它返回 True。 not(a and b) 返回 False
a = 10
b = 20
 
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"
 
# 修改變數 a 的值
a = 0
if  a and b :
   print "3 - 變數 a 和 b 都為 true"
else:
   print "3 - 變數 a 和 b 有一個不為 true"
 
if  a or b :
   print "4 - 變數 a 和 b 都為 true,或其中一個變數為 true"
else:
   print "4 - 變數 a 和 b 都不為 true"
 
if not( a and b ):
   print "5 - 變數 a 和 b 都為 false,或其中一個變數為 false"
else:
   print "5 - 變數 a 和 b 都為 true"

以上例項輸出結果:

1 - 變數 a 和 b 都為 true
2 - 變數 a 和 b 都為 true,或其中一個變數為 true
3 - 變數 a 和 b 有一個不為 true
4 - 變數 a 和 b 都為 true,或其中一個變數為 true
5 - 變數 a 和 b 都為 false,或其中一個變數為 false

Python成員運算子

除了以上的一些運算子之外,Python還支援成員運算子,測試例項中包含了一系列的成員,包括字串,列表或元組

運算子 描述 例項
in 如果在指定的序列中找到值返回 True,否則返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in 如果在指定的序列中沒有找到值返回 True,否則返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。
a = 10
b = 20
list = [1, 2, 3, 4, 5 ];
 
if ( a in list ):
   print "1 - 變數 a 在給定的列表中 list 中"
else:
   print "1 - 變數 a 不在給定的列表中 list 中"
 
if ( b not in list ):
   print "2 - 變數 b 不在給定的列表中 list 中"
else:
   print "2 - 變數 b 在給定的列表中 list 中"
 
# 修改變數 a 的值
a = 2
if ( a in list ):
   print "3 - 變數 a 在給定的列表中 list 中"
else:
   print "3 - 變數 a 不在給定的列表中 list 中"

 以上例項輸出結果:

1 - 變數 a 不在給定的列表中 list 中
2 - 變數 b 不在給定的列表中 list 中
3 - 變數 a 在給定的列表中 list 中

Python身份運算子

身份運算子用於比較兩個物件的儲存單元

運算子 描述 例項
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。

注: id() 函式用於獲取物件記憶體地址。

a = 20
b = 20
 
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 有相同的標識"
 
# 修改變數 b 的值
b = 30
if ( a is b ):
   print "3 - a 和 b 有相同的標識"
else:
   print "3 - a 和 b 沒有相同的標識"
 
if ( a is not b ):
   print "4 - a 和 b 沒有相同的標識"
else:
   print "4 - a 和 b 有相同的標識"

 以上例項輸出結果:

1 - a 和 b 有相同的標識
2 - a 和 b 有相同的標識
3 - a 和 b 沒有相同的標識
4 - a 和 b 沒有相同的標識

 is 與 == 區別:

is 用於判斷兩個變數引用物件是否為同一個, == 用於判斷引用變數的值是否相等。

>>> a = [1, 2, 3]
>>> b = a
>>> b is a 
True
>>> b == a
True
>>> b = a[:]
>>> b is a
False
>>> b == a
True

Python運算子優先順序

以下表格列出了從最高到最低優先順序的所有運算子:

運算子 描述
** 指數 (最高優先順序)
~ + - 按位翻轉, 一元加號和減號 (最後兩個的方法名為 [email protected][email protected])
* / % // 乘,除,取模和取整除
+ - 加法減法
>> << 右移,左移運算子
& 位 'AND'
^ | 位運算子
<= < > >= 比較運算子
<> == != 等於運算子
= %= /= //= -= += *= **= 賦值運算子
is is not 身份運算子
in not in 成員運算子
not and or 邏輯運算子
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

以上例項輸出結果:

(a + b) * c / d 運算結果為: 90
((a + b) * c) / d 運算結果為: 90
(a + b) * (c / d) 運算結果為: 90
a + (b * c) / d 運算結果為: 5

相關推薦

Python運算子--02

Python 運算子 什麼是運算子? 舉個簡單的例子 4 +5 = 9 。 例子中,4 和 5 被稱為運算元,"+" 稱為運算子。 Python語言支援以下型別的運算子: 算術運算子 比較(關係)運算子 賦值運算子 邏輯運算子 位運算子 成員運算子 身份運

Python技術棧02 Python3 Code 函式、類與繼承、裝飾器

0723 函式引數 *argm: 元組型別 **argm: 字典型別 In [1]: def sum(a, b, *argm): ...: print(a, b, argm) ...: ...: sum(1, 2, 'evan', 'pig', 'do

Python設計模式02 單例模式

1. python實現經典的單例模式 python通過覆蓋__new__()方法來控制物件的建立。 if not hasattr(cls, ‘instance’):方法hasattr用於檢視物件cls是否具有屬性instance, 該屬性的作用是檢查該類是否已經生成了一個物件。

Python基礎知識點總結:Pycharm安裝與配置建立專案運算子資料型別

一.Python 學習及開發環境(pycharm)安裝與配置      視訊講課老師說這個很好用,至於安裝很簡單,就是去 http://www.jetbrains.com/pycharm/ 這裡下載,記得下載專業版的哦,選擇自己對應的版本,然後就是點、點、點就好了呢。溫馨提

docker02、docker安裝

docker一、在CentOS上安裝Docker以下版本的CentOS 支持 Docker :CentOS 7 (64-bit) # CentOS 從 7 開始,和 RHEL 7 一樣都只支持 64 位架構。CentOS 6.5 (64-bit) or later請註意,由於 Docker 的局限

Python知識點面試小點列表生成式小坑

ada 調用 strong res 得到 bad 裝飾器 print eve 1、問題 有這麽一個小面試題: 看下面代碼請回答輸出的結果是什麽?為什麽? result = [lambda x: x + i for i in range(10)] print(re

python面試

var == st2 pen bsp ret logs pri lis 面試的題目當時還真沒看出來哈,這麽多list,水平有待提高,考一個指針的概念,代碼如下: def ttt(var, list=[]): list.append(var) return

Learing-Python0:Windows環境下Python2和Python3的安裝

一行 str rip 打開 spa ont exe 分享圖片 tps 一、下載 可以在官網下載最新版本, 也可以在以下鏈接中找想安裝的版本下載下來,這裏以Python3.6和Python2.7為例 https://www.python.org/ftp/python/

Learing-Python1:交互式環境與變量的使用

小寫 能夠 ise b- raise src cal 啟動 finall 一、執行Python程序的兩種方式 1. 交互式環境,打開cmd,輸入python2或python3,顯示提示符 “>>>”。   特點:輸出代碼立即執行

Learing-Python3Python中的基本運算符

連接 鏈式 優先 bubuko 圖片 比較運算 我只 還需要 其中 一、算數運算 二、比較(關系)運算 比較運算只能在同類型之間進行,其中 int 與 float 同屬於數字類型 三、賦值運算 1、增量賦值    2、鏈式賦值   

Learing-Python8Python字符編碼

自己 什麽 文件的 二階 pychar 不同 編碼 能夠 打開 1、內存和硬盤都是用來存儲的   內存:速度快   硬盤:永久保存 2、文本編輯器存取文件的原理(nodepad++,pycharm,word)   打開編輯器就可以啟動一個進程,是在內存中的,

python集合

輸出 card 指定 app 董事長 ava pri () pytho # #set方法創建集合# li=[‘nihao‘,‘dem‘,‘nvv‘,‘kkjj‘]# s=set(‘hello‘)# s=set(li)# print(s)# #添加元素# s={‘火虎‘,3,

python百分號

默認 name 字符串拼接 多個 百分比 pri 9.1 打印 小數點 #%百分號 字符串拼接 單個多個# nname=‘my name is %s‘%‘火虎‘# print(nname)# 輸出:my name is 火虎# na=‘my name is %s age

Learning-Python16:模塊的導入使用

共享 pre 模塊導入 符號 名稱空間 charm 理解 訪問 重新 一、什麽是模塊 模塊就是一系列功能的集合體,一個模塊就是一個包含了Python定義和聲明的文件,文件名就是模塊名字加上.py的後綴。 模塊有三種來源:   1、內置的模塊   2、第三方的模塊

Learning-Python26:反射及內置方法

回收 hasattr pass ict 不能 setattr hid 運行 opened 反射的概念 可以用字符串的方式去訪問對象的屬性,調用對象的方法(但是不能去訪問方法),Python 中一切皆對象,都可以使用反射。 反射有四種方法: hasattr:hasatt

python爬蟲學習_2(正則表示式篇)_2(practice)

習題來源:hackerrank  Matching Anything But a Newline(.的用法) answer :     regex_pattern = r"^(.{3}\.){3}.{3}$" Matching Digits &am

python爬蟲學習_2(正則表示式篇)1.基礎知識

一、簡介 正則表示式本身是一種小型的、高度專業化的程式語言,而在python中,通過內嵌整合re模組,程式媛們可以直接呼叫來實現正則匹配。正則表示式模式被編譯成一系列的位元組碼,然後由用C編寫的匹配引擎執行。 r標識代表後面是正則的語句 二、正則表示式中常用的字元含義 1、普通字元和

python爬蟲學習_1(基本知識篇)

首先介紹下urllib的用法 urllib提供了一系列用於操作URL的功能。 常用的模組: urllib.request 請求模組 urllib.error 異常處理模組 urllib.parse url解析模組 request() urllib的ruquest模組可以非常方便地

Learning-Python29:網路程式設計之粘包

粘包問題   上一篇部落格遺留了一個問題,在接收的最大位元組數設定為 1024 時,當接收的結果大於1024,再執行下一條命令時還是會返回上一條命令未執行完成的結果。這就是粘包問題。   因為TCP協議又叫流式協議,每次傳送給客戶端的資料實際上是傳送到客戶端所在作業系統的快取上,客戶端就是一個應用程式,需

Learning-Python21Python常用模組(4)—— re、logging、hashlib、subprocess

re 模組:與正則相關的模組 在使用 re 模組之前,需要先了解正則表示式(regular expression),描述了一種字串匹配的模式(pattern),可以用來檢查一個字串是否含有某個子字串、將匹配的子字串替換或者從某個字串中取出符合某個條件的子字串等。 import