05-python運算符

来源:https://www.cnblogs.com/Icer-newer/archive/2023/02/19/17134145.html
-Advertisement-
Play Games

運算符 算術運算符 算數運算符: + - * / // % ** # + var1 = 7 var2 = 90 res = var1 + var2 print(res) # 97 # - var1 = 7 var2 = 90 res = var1 - var2 print(res) # 83 # * ...


運算符

算術運算符

算數運算符: + - * / // % **

# +
var1 = 7
var2 = 90
res = var1 + var2
print(res) # 97

# -
var1 = 7
var2 = 90
res = var1 - var2
print(res) # 83
 
# *
var1 = 7
var2 = 10
res = var1 * var2
print(res) # 630

# / 結果永遠為小數
var1 = 10
var2 = 5
res = var1 / var2     # 5.0 
print(res , type(res))

# // 地板除
"""被除數 ➗ 除數 = 商"""
"""註意點:如果被除數或者除數是小數,那麼得到正常結果之後,數值後面帶上.0變成小數"""
var1 = 10.0
var2 = 3.0
# var2 = 3.0
res = var1 // var2  # 3.0
print(res)


# %  取餘
var1 = 7
var2 = 4
res = var1 % var2       # 3
res = -7 % 4  # -3 + 4 = 1       # 
res = 7 % -4  # 3 + (-4) = -1
res = -7 % -4 # -3 (被除數和除數都是負的,正常結果加負號)
res = 81 % 7   # 4
res = 81 % -7  # -3
res = -81 % 7  # 3
res = -81 % -7 # -4
print(res)

# ** 冪運算
res = 2 ** 3
print(res)   # 2^3=8

取餘數運算

-7 % 3,先算7%3=4,然後看被除數前符號==>-4,再加上除數,-4+3=-1
7 % -3,7%3=4,被除數正,4+-3=1

比較運算符

比較運算符: > < >= <= == !=
比較運算符的結果要麼是True , 要麼是False 只有兩個值

res = 10 > 5
res = 10 >= 10
# ==這個符號是在做比較,比較==兩邊的數值是否一樣
res = 5 == 9
res = 5 != 9 
print(res)

賦值運算符

賦值運算符: = += -= *= /= //= %= **=

賦值運算符 將右側的值賦值給左側變數;一般右側先運算再賦值給左邊

# = 賦值運算符 將右側的值賦值給左側變數
a = 5 <= 3
print(a)


var1 = 10
var2 = 5
# += 
"""var1 = var1 + var2"""
# var1 += var2
# print(var1)

# -=
"""var1 = var1 - var2"""
# var1 -= var2
# print(var1)

# %=
"""var1 = var1 % var2"""
var1 %= var2
print(var1)

成員運算符(in/not in)

成員運算符: in 和 not in (針對於容器型數據)

xxx in/not in 容器類型,判斷是不是再字元串中

"""字元串判斷時,必須是連續的片段"""
strvar = "今天天氣要下雨,趕緊回家收衣服"

res = "今" in strvar    # True
res = "天氣" in strvar  # True
res = "趕回" in strvar  # False
print(res)

# 針對於列表,元組,集合
container = ["趙沈陽","趙萬里","趙世超"]
container = ("趙沈陽","趙萬里","趙世超")
container = {"趙沈陽","趙萬里","趙世超"}
# res = "趙沈陽" in container       # True
# res = "趙萬里" not in container   # False
res = "趙世超1223232" not in container # True
print(res)
 
# 針對於字典 (判斷的是字典的鍵,不是值)
container = {"zsy":"趙沈陽","zwl":"趙萬里","zsc":"趙世超"}
res = "趙沈陽" in container # False
res = "zsy" in container
print(res)

身份運算符(is/not is)

身份運算符 is 和 is not (檢測兩個數據在記憶體當中是否是同一個值),判斷地址

# 整型 -5~正無窮 (駐留小數據池)
var1 = 100
var2 = 100
print(var1 is var2)   # True

# 浮點型 非負數  
var1 = -9.1
var2 = -9.1
print(var1 is var2)  # False

# bool 相同即可
var1 = True
var2 = True
print(var1 is var2)  # True

# complex 在實數+虛數不相同 (只有虛數的情況下例外)
var1 = 6-8j
var2 = 6-8j   # False
var1 = -10j
var2 = -10j   # False
var1 = 10j
var2 = 10j    # True
print(var1 is var2)

# 容器: 相同字元串 , 空元組相同即可  剩下的所有容器都不相同
container1 = ()
container2 = ()
print(container1 is not container2)  # False

container1 = "你"
container2 = "你"
print(container1 is not container2)   # False

container1 = [1,23,3]
container2 = [1,23,3]
print(container1 is not container2)   # True

邏輯運算符

邏輯運算符: and or not

# and 邏輯與   
"""全真則真,一假則假"""
res = True and True    # True
res = True and False   # False
res = False and True   # False
res = False and False  # False
print(res)

# or  邏輯或  
"""一真則真,全假則假"""
res = True or True    # True
res = False or True   # True
res = True or False   # True 
res = False or False  # False
print(res)

# not 邏輯非  
res = not True
res = not False
print(res)

# 邏輯短路
計算規律:
	先腦補計算當前表達式的布爾值是True還是False
	如果出現了 True or 表達式  或者 False and 表達式的情況,直接返回前者,後面代碼不執行
	如果沒有出現短路效果,直接返回後者
"""
無論後面的表達式是True 還是False 都已經無法改變最後的結果,那麼直接短路,後面的代碼不執行;
(1) True or print("程式執行了 ~ 1111")
(2) False and print("程式執行了 ~ 2222")

True or print("程式執行了 ~ 1111")
True or True => True
True or False => True
False and print("程式執行了 ~ 2222")
False and True  => False
False and False => False
"""

res = 5 and 6 # 6
"""
True and True =>True
True and False => False
"""
res = 5 or 6  # 5
res = 0 and 999
res = 0 or "abc"
print(res)

# 邏輯運算符的優先順序
""" 優先順序從高到低: () > not > and > or   """
res = 5 or 6 and 7 # 5 or 7 => 5
res = (5 or 6) and 7 # 5 and 7
res = not (5 or 6) and 7 # not 5 and 7 => False and 7 => False
res = 1<2 or 3>4 and 5<100 or 100<200 and not (700>800 or 1<-1)
"""
not (False or False) => True
res = 1<2 or 3>4 and 5<100 or 100<200 and not (700>800 or 1<-1)
res = True or False and True or True and True
res = True or False or True
res = True or True => True
"""
print(res)
 

位運算符

位運算符: & | ^ << >> ~

var1 = 19   // 10011
var2 = 15   // 1111

# & 按位與
res = var1 & var2    # 3
"""
000 ... 10011
000 ... 01111
000 ... 00011 => 3
"""
print(res)

# | 按位或
res = var1 | var2
"""
000 ... 10011
000 ... 01111
000 ... 11111
"""
print(res)   # 

# ^ 按位異或
"""兩個值不相同=>True 反之返回False"""
res = var1 ^ var2
"""
000 ... 10011
000 ... 01111
000 ... 11100
"""
print(res)

# << 左移 (相當於乘法)
"""5乘以2的n次冪"""
res = 5 << 1 # 10
res = 5 << 2 # 20
res = 5 << 3 # 40
print(res)

"""
000 ... 101  => 5
000 .. 1010  => 10
000 ..10100  => 20
000 .101000  => 40
"""

# >> 右移 (相當於除法)
"""5地板除2的n次冪"""
res = 5 >> 1 # 2
res = 5 >> 2 # 1
res = 5 >> 3 # 0
"""
000 ... 101
000 ... 010 => 2
000 ... 001 => 1
000 ... 000 => 0
"""
print(res)


# ~ 按位非 (針對於補碼進行操作,按位取反,包含每一位)
""" -(n+1) """
# res = ~22
res = ~19
print(res)
"""
原碼:000 ... 10011
反碼:000 ... 10011
補碼:000 ... 10011

補碼:   000 ... 10011
按位非: 111 ... 01100

給你補碼->原碼
補碼:111 ... 01100
反碼:100 ... 10011
原碼:100 ... 10100 => -20
"""

res = ~-19
print(res)  # 20

運算符優先順序

"""
總結:
	個別運算符:
		運算符優先順序最高的: **
		運算符優先順序最低的: =
		()可以提升優先順序
		
	一元運算符 > 二元運算符 (優先順序)
		一元運算符 : 同一時間,操作一個值 ~ - 
		二元運算符 : 同一時間,操作一個值 + - * / ....
		
	同一種類運算符:
		算數運算符 : 乘除 > 加減
		邏輯運算符 : () > not > and > or 
		位運算符   : ( << >> ) > & > ^ > |
	
	整體排序:
		算數運算符 > 位運算符 > 比較運算符 > 身份運算符 > 成員運算符 > 邏輯運算符
		賦值運算符用來做收尾
"""

res = 5+5 << 6 // 3 is 40 and False
"""
res = 10 << 2 is 40 and False
res = 40 is 40 and False
res = True and False
res = False
"""
print(res)

# 用括弧提升下優先順序
res = (5+5) << (6//3) is 40 and False

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這次設計一個DDS信號發生器。該設計的特點有: 雙通道的DA輸出,可以調節頻率、相位、和波形(正弦波、方波、三角波)。 擁有相位重置的功能,能夠同時重置兩個輸出波形的相位。 本次採用的是小梅哥的ACM2108模塊。該模塊有兩個通道的ADC和兩個通道的DAC。 本次設計的前置是DDS基本模塊,具體可點 ...
  • Requests 是一個 Python 的一個第三方庫,通過發送 HTTP 請求獲取響應數據,一般應用於編寫網路爬蟲和介面測試等。 相比 urllib 庫,它語法簡單,更容易上手。 官方中文文檔地址:Requests: 讓 HTTP 服務人類 離線文檔下載地址:Requests document d ...
  • 背景 golang可以獲取命令執行的輸出結果,但要執行完才能夠獲取。 如果執行的命令是ssh,我們要實時獲取,並執行相應的操作呢? 示例 func main() { user := "root" host := "172.16.116.133" //獲取執行命令 cmd := exec.Comman ...
  • IDEA如何使用Maven不通過模板創建javaWeb項目 1.創建項目 進入IDEA,點擊“項目”>“新建項目”,填寫項目信息,最後點擊“創建”。 點擊“創建”後,自動進入新創建的項目。 2.給項目配置Web框架 點擊 “文件”>“項目結構”,自動跳轉到項目結構。 點擊 “模塊” > “+” > ...
  • 給大家推薦一個比Redis性能更強的數據:KeyDB KeyDB是Redis的高性能分支,側重於多線程、記憶體效率和高吞吐量。除了性能改進外,KeyDB還提供主動複製、快閃記憶體和子密鑰過期等功能。KeyDB具有MVCC架構,允許您在不阻塞資料庫和降低性能的情況下執行密鑰和掃描等查詢。 KeyDB與Redi ...
  • ​ 函數的調用、定義、參數 ​編輯 #######命名關鍵字參數沒完 abs()函數:絕對值 >>> abs(100) 100 >>> abs(-20) 20 max()函數:接收任意多個參數,並返回最大的那個 >>> max(1, 2) 2 >>> max(2, 3, 1, -5) 3 數據類型轉 ...
  • 介紹 棧(stack)又名堆棧,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。這一端被稱為棧頂,相對地,把另一端稱為棧底。向一個棧插入新元素又稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從一個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相 ...
  • leetcode《圖解數據結構》劍指 Offer 34. 二叉樹中和為某一值的路徑(java解題)的解題思路和java代碼,並附上java中常用數據結構的功能函數。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...