Python通過(guò)%操作符進(jìn)行取余運(yùn)算與字符串格式化的深度解析
前言
在 Python 中,百分號(hào) % 是一個(gè)多功能的操作符,主要有兩種核心用法:取余運(yùn)算(模運(yùn)算)和字符串格式化。本文將詳細(xì)介紹這兩種用法及其實(shí)際應(yīng)用場(chǎng)景。
一、取余運(yùn)算(模運(yùn)算)
% 作為取余運(yùn)算符時(shí),用于計(jì)算兩個(gè)數(shù)相除后的余數(shù),語(yǔ)法為 a % b,表示計(jì)算 a 除以 b 后的余數(shù)。
1. 基本用法
# 正數(shù)取余 print(7 % 3) # 輸出: 1(7 = 3×2 + 1) print(10 % 4) # 輸出: 2(10 = 4×2 + 2) print(8 % 2) # 輸出: 0(整除時(shí)余數(shù)為0) # 負(fù)數(shù)取余 print(-7 % 3) # 輸出: 2(-7 = 3×(-3) + 2) print(7 % -3) # 輸出: -2(7 = (-3)×(-3) + (-2)) print(-7 % -3) # 輸出: -1(-7 = (-3)×2 + (-1))
2. 關(guān)鍵特性
- 結(jié)果的符號(hào)與除數(shù)(第二個(gè)操作數(shù)) 保持一致。
- 滿足恒等式:
a = (a // b) * b + (a % b)(商×除數(shù) + 余數(shù) = 被除數(shù))。
a, b = 17, 5 print((a // b) * b + (a % b) == a) # 輸出: True(3×5 + 2 = 17)
3. 實(shí)際應(yīng)用場(chǎng)景
判斷奇偶性:通過(guò) n % 2 判斷結(jié)果是 0(偶數(shù))還是 1(奇數(shù))。
def is_even(n):
return n % 2 == 0
print(is_even(4)) # 輸出: True
print(is_even(7)) # 輸出: False
判斷整除性:若 a % b == 0,則 a 能被 b 整除。
def is_divisible(a, b):
return a % b == 0
print(is_divisible(10, 5)) # 輸出: True
print(is_divisible(7, 3)) # 輸出: False
循環(huán)取值:在固定范圍內(nèi)循環(huán)獲取索引(如列表循環(huán)訪問(wèn))。
colors = ["紅", "綠", "藍(lán)"]
for i in range(5):
print(colors[i % 3]) # 循環(huán)輸出: 紅、綠、藍(lán)、紅、綠
時(shí)間轉(zhuǎn)換:例如將總秒數(shù)轉(zhuǎn)換為“分:秒”格式。
total_seconds = 135
minutes = total_seconds // 60 # 2
seconds = total_seconds % 60 # 15
print(f"{minutes}:{seconds}") # 輸出: 2:15
二、字符串格式化
% 作為格式化操作符時(shí),用于將變量插入字符串中,語(yǔ)法為 格式字符串 % 變量,類似其他語(yǔ)言中的“占位符”功能。
1. 基本用法
格式字符串中用 % 開(kāi)頭的占位符表示需要替換的位置,常見(jiàn)占位符如下:
%s:字符串(可接收任何類型,自動(dòng)轉(zhuǎn)換為字符串)%d:整數(shù)%f:浮點(diǎn)數(shù)%x:十六進(jìn)制整數(shù)(小寫)%X:十六進(jìn)制整數(shù)(大寫)
name = "Alice"
age = 30
print("姓名: %s, 年齡: %d" % (name, age)) # 輸出: 姓名: Alice, 年齡: 30
pi = 3.1415926
print("圓周率: %.2f" % pi) # 輸出: 圓周率: 3.14(保留2位小數(shù))
num = 255
print("十六進(jìn)制: %x" % num) # 輸出: 十六進(jìn)制: ff
2. 高級(jí)格式化技巧
指定寬度:通過(guò) %Nd(整數(shù))或 %N.Mf(浮點(diǎn)數(shù))控制輸出寬度和精度。
print("數(shù)字: %5d" % 3) # 輸出: 數(shù)字: 3(占5位,右對(duì)齊)
print("浮點(diǎn)數(shù): %8.2f" % pi) # 輸出: 浮點(diǎn)數(shù): 3.14(總寬度8,保留2位小數(shù))
左對(duì)齊:在寬度前加 - 實(shí)現(xiàn)左對(duì)齊。
print("左對(duì)齊: %-5d" % 3) # 輸出: 左對(duì)齊: 3
字典格式化:使用 %(key)s 從字典中取值,增強(qiáng)可讀性。
user = {"name": "Bob", "score": 95}
print("姓名: %(name)s, 分?jǐn)?shù): %(score)d" % user) # 輸出: 姓名: Bob, 分?jǐn)?shù): 95
3. 注意事項(xiàng)
- 占位符數(shù)量需與后面的變量數(shù)量一致,否則會(huì)拋出
TypeError。 - 雖然 Python 3.6+ 引入了更強(qiáng)大的 f-字符串(如
f"姓名: {name}"),但%格式化在舊代碼中仍常見(jiàn),需了解其用法。
三、總結(jié)
% 操作符在 Python 中有兩種核心用法:
- 取余運(yùn)算:計(jì)算除法余數(shù),用于奇偶判斷、整除校驗(yàn)、循環(huán)取值等場(chǎng)景,結(jié)果符號(hào)與除數(shù)一致。
- 字符串格式化:通過(guò)占位符替換變量,支持多種數(shù)據(jù)類型和格式控制,是傳統(tǒng)的字符串拼接方式。
根據(jù)場(chǎng)景靈活使用 % 的兩種功能,能讓代碼更簡(jiǎn)潔、高效。在現(xiàn)代 Python 開(kāi)發(fā)中,取余運(yùn)算仍被廣泛使用,而字符串格式化則可根據(jù)需求選擇 %、f-字符串或 str.format()。
到此這篇關(guān)于Python通過(guò)%操作符進(jìn)行取余運(yùn)算與字符串格式化的深度解析的文章就介紹到這了,更多相關(guān)Python操作符%內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python進(jìn)階之使用selenium爬取淘寶商品信息功能示例
這篇文章主要介紹了Python進(jìn)階之使用selenium爬取淘寶商品信息功能,結(jié)合實(shí)例形式詳細(xì)分析了Python使用selenium與requests模塊爬取淘寶商品信息的相關(guān)操作技巧,需要的朋友可以參考下2019-09-09
python?pip特殊用法之pip?install?-v?-e?.命令詳解
這篇文章主要給大家介紹了關(guān)于python?pip特殊用法之pip?install?-v?-e?.命令的相關(guān)資料,文中通過(guò)圖文以及實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-09-09
Python 異步編程 asyncio簡(jiǎn)介及基本用法
asyncio 是 Python 的一個(gè)庫(kù),用于編寫并發(fā)代碼,使用協(xié)程、任務(wù)和 Futures 來(lái)處理 I/O 密集型和高延遲操作,本文給大家介紹Python 異步編程 asyncio簡(jiǎn)介及基本用法,感興趣的朋友一起看看吧2025-05-05
基于pytorch實(shí)現(xiàn)運(yùn)動(dòng)鞋品牌識(shí)別功能
這篇文章主要給大家介紹了關(guān)于如何基于pytorch實(shí)現(xiàn)運(yùn)動(dòng)鞋品牌識(shí)別功能,文中通過(guò)圖文以及實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用PyTorch具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2024-02-02
Python+SymPy實(shí)現(xiàn)秒解微積分詳解
SymPy是一個(gè)Python庫(kù),專注于符號(hào)數(shù)學(xué),它的目標(biāo)是成為一個(gè)全功能的計(jì)算機(jī)代數(shù)系統(tǒng),同時(shí)保持代碼簡(jiǎn)潔、易于理解和擴(kuò)展。本文將利用SymPy實(shí)現(xiàn)四行代碼秒解微積分,感興趣的可以學(xué)習(xí)一下2022-05-05
pytorch中的hook機(jī)制register_forward_hook
這篇文章主要介紹了pytorch中的hook機(jī)制register_forward_hook,手動(dòng)在forward之前注冊(cè)hook,hook在forward執(zhí)行以后被自動(dòng)執(zhí)行,下面詳細(xì)的內(nèi)容介紹,需要的小伙伴可以參考一下2022-03-03

