python基本運算符_06-Python基礎知識學習---基本運算符

算術運算符

python支持的算數運算符與數學上計算的符號使用是一致的(x = 5 , y = 2):

算術運算符

描述

示例

+

兩個對象相加

x + y = 7

-

兩個對象相減

x - y = 3

*

兩個對象相乘

x * y = 10

/

除,返回值保留整數和小數部分

x / y = 2.5

//

整除,只保留整數部分

x // y = 2

%

取余數

x % y = 1

**

一個數的n次方

x ** y = 25

x = 5

y = 2

print(f"x + y = {x + y}")

print(f"x - y = {x - y}")

print(f"x * y = {x * y}")

print(f"x / y = {x / y}")

print(f"x // y = {x // y}")

print(f"x % y = {x % y}")

print(f"x ** y = {x ** y}")

# x + y = 7

# x - y = 3

# x * y = 10

# x / y = 2.5

# x // y = 2

# x % y = 1

# x ** y = 25

比較運算符

比較運算用來對兩個值進行比較,返回的是布爾值(x = 5,y = 2):

比較運算符

描述

示例

==

相等

x ==y // False

!=

不相等

x !=y // True

>

大于

x > y // True

>=

大于等于

x >= y // True

<

小于

x < y // False

<=

小于等于

x <= y // False

x = 5

y = 2

print(f"x == y = {x == y}")

print(f"x != y = {x != y}")

print(f"x > y = {x > y}")

print(f"x >= y = {x >= y}")

print(f"x < y = {x < y}")

print(f"x <= y = {x <= y}")

# x == y = False

# x != y = True

# x > y = True

# x >= y = True

# x < y = False

# x <= y = False

賦值運算符

python語法中除了有=號這種簡單的賦值運算外,還支持增量賦值、鏈式賦值、交叉賦值、解壓賦值,這些賦值運算符存在的意義都是為了讓我們的代碼看起來更加精簡。

增量賦值

賦值運算符

描述

示例

+=

加法賦值運算符

x += 1 相當于 x = x + 1

-=

減法賦值運算符

x -= 1 相當于 x = x - 1

*=

乘法賦值運算符

x *= 1 相當于 x = x * 1

/=

除法賦值運算符

x /= 1 相當于 x = x / 1

//=

整除賦值運算符

x //= 1 相當于 x = x // 1

%=

取余賦值運算符

x %= 1 相當于 x = x % 1

**=

冪賦值運算符

x **= 1 相當于 x = x ** 1

x = 5

x += 2

print(f"x += 2 = {x}") # 7

x = 5

x -= 2

print(f"x -= 2 = {x}") # 3

x = 5

x *= 2

print(f"x *= 2 = {x}") # 10

x = 5

x /= 2

print(f"x /= 2 = {x}") # 2.5

x = 5

x //= 2

print(f"x //= y = {x}") # 2

x = 5

x %= 2

print(f"x %= y = {x}") # 1

x = 5

x **= 2

print(f"x **= y = {x}") # 25

鏈式賦值

如果我們想把同一個值同時賦值給多個變量名可以這么做:

z = 10

y = z

x = y

print(x, y, z) # 10 10 10

鏈式賦值指的是可以用一行代碼搞定這件事:

x = y = z = 10

print(x, y, z) # 10 10 10

交叉賦值

如果我們想交換兩個變量的值可以這么做:

x = 10

y = 20

print(f"x = {x}, y = {y}")

# x = 10, y = 20

temp = x

x = y

y = temp

print(f"x = {x}, y = {y}") # x = 20, y = 10

交叉賦值指的是一行代碼可以搞定這件事:

x = 10

y = 20

print(f"x = {x}, y = {y}") # x = 10, y = 20

x, y = y, x

print(f"x = {x}, y = {y}") # x = 20, y = 10

解壓賦值

如果我們想把列表中的多個值取出來依次賦值給多個變量名可以這么做:

numbers = [1, 2, 3]

a = numbers[0]

b = numbers[1]

c = numbers[2]

print(a, b, c) # 1 2 3

解壓賦值指的是一行代碼可以搞定這件事:

numbers = [1, 2, 3]

a, b, c = numbers

print(a, b, c) # 1 2 3

解壓賦值時等號左邊的變量名個數必須與右面包含值的個數相同,否則會報錯:

numbers = [1, 2, 3]

# 變量個數少了

a, b = numbers

# Traceback (most recent call last):

# File "/Users/fqyy/Downloads/Code/Learn/Python/demo.py", line 3, in # a, b = numbers

# ValueError: too many values to unpack (expected 2)

# 變量個數多了

a, b, c, d = numbers

# Traceback (most recent call last):

# File "/Users/fqyy/Downloads/Code/Learn/Python/demo.py", line 11, in

# a, b, c, d = numbers

# ValueError: not enough values to unpack (expected 4, got 3)

如果我們只想取頭尾的幾個值可以用 *變量名 進行匹配,此時Python會將沒有對應關系的值存成列表然后賦值給緊跟其后的變量名:

numbers = [1, 2, 3, 4, 5, 6]

# 取前面兩個

a, b, *_ = numbers print(a, b) # 1 2

# 取后面兩個

*_, a, b = numbers print(a, b) # 5 6

注意: 這里的 _ 是變量名,一般自己定義變量的時候不要使用下劃線( _ )開頭和結尾,或者直接使用下劃線( _ ),從Python的規范上來說它們都有特殊的用處,所有自己定義的變量不要去用。比如這里直接使用下劃線( _ )接受數據表示該變量一般不會使用,僅僅做為占位符。

除了列表外,字符串、字典、元組、集合類型都支持解壓賦值:

# 列表

l = [1, 2, 3]

a, b, c = l

print(a, b, c) # 1 2 3

# 元祖

t = (4, 5, 6)

a, b, c = t

print(a, b, c) # 4 5 6

# 集合

s = {7, 8, 9}

a, b, c = s

print(a, b, c) # 8 9 7

# 字符串

a, b, c = "abc"

print(a, b, c) # a b c

# 字典 獲取的是key值

a, b, c = {"name": "Tom", "age": 18, "gender": "男"}

print(a, b, c) # name age gender

邏輯運算符

邏輯運算符

描述

and

邏輯與,只有當兩個對象都是True的時候返回True, 否則返回False

or

邏輯或,只有當兩個對象都是False的時候返回False,否則返回True

not

取反

邏輯運算符用于連接多個條件進行關聯判斷,會返回布爾值:

# 邏輯與

print(1 and 2) # 2

print(1 and 0) # 0

print(0 and 0) # 0

# 邏輯或

print(1 or 2) # 1

print(1 or 0) # 1

print(0 or 0) # 0

# 邏輯非

print(not 1) # False

print(not 0) # True

可以用and連接多個條件,會按照從左到右的順序依次判斷,一旦某一個條件為False,則無需再往右判斷,可以立即判定最終結果就為False;只有在所有條件的結果都為True的情況下,最終結果才為True:

# 多個and

# 有一個是False就為False

print(1 and 0 and 2) # 0

# 全部是True的時候才是True

print(1 and 2 and 3) # 3

同樣也可以用or連接多個條件,此時會按照從左到右的順序依次判斷,一旦某一個條件為True,則無需再往右判斷,可以立即判定最終結果就為True;只有在所有條件的結果都為False的情況下,最終結果才為False:

# 多個or

# 有一個是True就是True

print(1 or 0 or 2) # 1

# 全部是False的時候才是False

print(0 or 0 or 0) # 0

注意: 三者的優先級關系 not > and > or ,同一優先級默認從左往右計算。最好使用括號來區別優先級,其實意義與上面的一樣。

邏輯運算的結果一旦可以確定,那么就以當前處計算到的值作為最終結果返回,這種現象叫做 短路運算:

# 因為or只要有一個為True就是True,因此當獲取到1后不會在執行后面的

print(1 or 0 or 2) # 1

# 因為or只要有一個為False就是False,因此當獲取到0后不會在執行后面的

print(0 and 1 and 2) # 0

成員運算符

成員運算符

描述

in

某個對象是否包含另一個對象,字符串、列表、元祖、集合和字典都支持

not in

某個對象是否不包含另一個對象

# 字符串

print('a' in 'Hello') # False

print('a' not in 'Hello') # Ture

# 字典 默認判斷是的key

print('a' in {"name": "age"}) # False

print('a' not in {"name": "age"}) # True

# 集合

print('a' in {'a', 'b'}) # True

print('a' not in {'a', 'b'}) # False

# 列表

print('a' in ['a', 'b']) # True

print('a' not in ['a', 'b']) # False

# 元祖

print('a' in ('a', 'b')) # True

print('a' not in ('a', 'b')) # False

注意: 雖然兩種判斷可以達到相同的效果,但推薦使用not in,因為它的語義更加明確。

身份運算符

身份運算符

描述

is

某個對象是否包含另一個對象,字符串、列表、元祖、集合和字典都支持

is not

某個對象是否不包含另一個對象

x = "Hello World"

y = "Hello World"

z = x

print(x is y) # False

print(x is not y) # True

print(x is z) # True

print(x is not z) # False

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/374079.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/374079.shtml
英文地址,請注明出處:http://en.pswp.cn/news/374079.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java wait()和sleep() 的區別

之前在寫代碼的時候&#xff0c;如果需要讓線程等待一會&#xff0c;就直接使用sleep()方法&#xff0c;一直也沒有出過問題。而wait()方法的出場率很高&#xff0c;每次打一個句點的時候&#xff0c;對象的方法彈出來&#xff0c;總是能看到wait()在其中&#xff0c;wait()是一…

異常:com.microsoft.sqlserver.jdbc.SQLServerException: 將截斷字符串或二進制數據。

com.microsoft.sqlserver.jdbc.SQLServerException: 將截斷字符串或二進制數據。 at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:196) at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:246) a…

Java中的數據庫架構導航

jOOQ的重要組成部分是數據庫架構導航模塊jooq-meta。 代碼生成器使用它來發現相關的架構對象。 我多次被問到為什么我要自己滾動而不使用其他庫&#xff0c;例如SchemaCrawler或SchemaSpy &#xff0c;確實很遺憾我不能依賴其他穩定的第三方產品。 以下是有關數據庫架構導航的一…

python自動化測試的工具_python自動化測試(3)- 自動化框架及工具

3 基本示例如下示例也來自于官方文檔 basic_demo.py&#xff1a;# coding:utf-8"""基本的自動化測試腳本 basic_demo.py"""__author__ zhengimport unittestclass TestStringMethods(unittest.TestCase):def setUp(self):print init by setUp…

Html轉Word文檔,解決無法保存網絡圖片的問題

最近項目中需要這個功能&#xff0c;網上有很多word轉html的方法&#xff0c;但是html轉word的方法很少&#xff0c;因為html中的圖片轉換到本地比較麻煩&#xff1b; 開始的時候只能轉換不帶圖片的html內容&#xff0c;但是不符合要求&#xff0c;將html頁面中的圖片改成絕對路…

一不小心就掉大啦《數組使用注意》

今天程序提交答案總是不對&#xff0c;調試半天才發現本定義的是char s[4]{1,2,3,4} ; 程序運行過程中輸出才發現多了一個字符 printf("%s\n"); //結果12349 思前想后覺得可能是沒有字符數組結束符 (\0); 特別注意&#xff1a; 定義使用字符型數組時&#xff0c;應…

Java并發教程–阻塞隊列

如第3部分所述&#xff0c;Java 1.5中引入的線程池提供了核心支持&#xff0c;該支持很快成為許多Java開發人員的最愛。 在內部&#xff0c;這些實現巧妙地利用了Java 1.5中引入的另一種并發功能-阻塞隊列。 隊列 首先&#xff0c;簡要回顧一下什么是標準隊列。 在計算機科學…

json和字符串/數組/集合的互相轉換の神操作總結

一:前端字符串轉JSON的4種方式 1&#xff0c;eval方式解析&#xff0c;恐怕這是最早的解析方式了。 function strToJson(str){var json eval(( str ));return json; } 2&#xff0c;new Function形式&#xff0c;比較怪異哦。 function strToJson(str){var json (new Funct…

python 修改array_python 基礎_ 數組的 增刪改查3

數組是運用在多個數據存在一個變量中的&#xff0c;而在調用的時候可以調用所需要的數組。創建數組a [a,b,c,d,f]   #創建一個數組a其中有5個元素分別是abcdf1.查詢。所謂的查詢就是顯示變量a中一個或是一些元素print (a[1])  #打印出a變量中的序列1的元素&#xff0c;我們…

Android實現推送方式解決方案

Android實現推送方式解決方案 本文介紹在Android中實現推送方式的基礎知識及相關解決方案。推送功能在手機開發中應用的場景是越來起來了&#xff0c;不說別的&#xff0c;就我們手機上的新聞客戶端就時不j時的推送過來新的消息&#xff0c;很方便的閱讀最新的新聞信息。這種推…

NYOJ 2 括號配對問題

括號配對問題 時間限制&#xff1a;3000 ms | 內存限制&#xff1a;65535 KB難度&#xff1a;3描述 現在&#xff0c;有一行括號序列&#xff0c;請你檢查這行括號是否配對。 輸入第一行輸入一個數N&#xff08;0<N<100&#xff09;,表示有N組測試數據。后面的…

您應該對什么進行單元測試? –測試技術3

昨天我在辦公室里&#xff0c;和我的一位同事談論測試&#xff0c;他對編寫單元測試有些不服氣。 他使用的原因之一是有些測試似乎毫無意義&#xff0c;這使我想到了什么是單元測試&#xff0c;什么也不需要打擾。 考慮下面一個簡單的不可變的Name Bean&#xff0c;其中包含一…

java基礎知識系列---垃圾收集

1 為什么要使用垃圾回收機制&#xff1f; “垃圾收集”暗示程序不再需要的對象就是垃圾&#xff0c;可以被丟棄。更精確&#xff0c;更新的說法是“內存回收”。 1.1 新對象的使用 當一個對象不再被程序所引用時&#xff0c;他所使用的堆空間可以被回收&#xff0c;以便于被后續…

經濟

聯合國&#xff0c;美蘇英法中 國家要外匯儲備干什么&#xff1f; 01年加入WTO &#xff0c;美國躲開 WTO 另起爐灶 TPP 諾貝爾經濟學獎得主 克魯格蠻 觸動利益比觸動靈魂還困難 SDR IMF 轉載于:https://www.cnblogs.com/zrui513/p/5014593.html

wxpython的sizer_wxPython BoxSizer布局

Box wx.BoxSizer(wxHORIZONTAL) Box wx.BoxSizer(wxVERTICAL)Add() 方法(從wxSizer繼承)它附加到sizer的下一行/列。Box.Add(control, proportion, flag, border)proportion 參數控制的控件響應于所述容器的尺寸改變其大小。各種flag 參數的組合決定控件在sizer的外觀。下面是…

NYOJ 6 噴水裝置(一)

噴水裝置&#xff08;一&#xff09; 時間限制&#xff1a;3000 ms | 內存限制&#xff1a;65535 KB 難度&#xff1a;3描述 現有一塊草坪&#xff0c;長為20米&#xff0c;寬為2米&#xff0c;要在橫中心線上放置半徑為Ri的噴水裝置&#xff0c;每個噴水裝置的效果都會讓以它為…

如何部署Zabbix服務端

部署環境 RHEL 6.7 Zabbix-server 2.2.14 安裝zabbix官方源 # wget http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm # rpm -ivh zabbix-release-2.2-1.el6.noarch.rpm 安裝zabbix-server # yum install zabbix zabbix-server-mysql zab…

Google App Engine上的Spring MVC和REST

前段時間&#xff0c;我寫了一篇關于如何使用Spring MVC實現Restful Web API的文章 。 閱讀我以前的文章以了解它。 在那篇文章中&#xff0c;開發了一個簡單的Rest示例。 為了測試該應用程序&#xff0c;將文件復制到Web服務器&#xff08;例如Tomcat &#xff09;中&#xff…

SALT+HASH撒鹽加密

#region 撒鹽加密string salt Guid.NewGuid().ToString();byte[] passwordAndSaltBytes System.Text.Encoding.UTF8.GetBytes(model.Password salt);byte[] hashBytes new System.Security.Cryptography.SHA256Managed().ComputeHash(passwordAndSaltBytes);string hashStr…

python 子串是否在字符串中_python七種方法判斷字符串是否包含子串

1. 使用 in 和 not inin 和 not in 在 Python 中是很常用的關鍵字&#xff0c;我們將它們歸類為 成員運算符。使用這兩個成員運算符&#xff0c;可以很讓我們很直觀清晰的判斷一個對象是否在另一個對象中&#xff0c;示例如下&#xff1a;>>> "llo" in &quo…