Python通过%操作符进行取余运算与字符串格式化的深度解析

 更新时间:2025年09月12日 10:11:15   作者:鸽芷咕  
在 Python 中,百分号 % 是一个多功能的操作符,主要有两种核心用法:取余运算(模运算)和字符串格式化,本文将详细介绍这两种用法及其实际应用场景,感兴趣的小伙伴可以了解下

前言

在 Python 中,百分号 % 是一个多功能的操作符,主要有两种核心用法:取余运算(模运算)和字符串格式化。本文将详细介绍这两种用法及其实际应用场景。

一、取余运算(模运算)

% 作为取余运算符时,用于计算两个数相除后的余数,语法为 a % b,表示计算 a 除以 b 后的余数。

1. 基本用法

# 正数取余
print(7 % 3)   # 输出: 1(7 = 3×2 + 1)
print(10 % 4)  # 输出: 2(10 = 4×2 + 2)
print(8 % 2)   # 输出: 0(整除时余数为0)

# 负数取余
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. 关键特性

  • 结果的符号与除数(第二个操作数) 保持一致。
  • 满足恒等式:a = (a // b) * b + (a % b)(商×除数 + 余数 = 被除数)。
a, b = 17, 5
print((a // b) * b + (a % b) == a)  # 输出: True(3×5 + 2 = 17)

3. 实际应用场景

判断奇偶性:通过 n % 2 判断结果是 0(偶数)还是 1(奇数)。

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

循环取值:在固定范围内循环获取索引(如列表循环访问)。

colors = ["红", "绿", "蓝"]
for i in range(5):
    print(colors[i % 3])  # 循环输出: 红、绿、蓝、红、绿

时间转换:例如将总秒数转换为“分:秒”格式。

total_seconds = 135
minutes = total_seconds // 60  # 2
seconds = total_seconds % 60    # 15
print(f"{minutes}:{seconds}")   # 输出: 2:15

二、字符串格式化

% 作为格式化操作符时,用于将变量插入字符串中,语法为 格式字符串 % 变量,类似其他语言中的“占位符”功能。

1. 基本用法

格式字符串中用 % 开头的占位符表示需要替换的位置,常见占位符如下:

  • %s:字符串(可接收任何类型,自动转换为字符串)
  • %d:整数
  • %f:浮点数
  • %x:十六进制整数(小写)
  • %X:十六进制整数(大写)
name = "Alice"
age = 30
print("姓名: %s, 年龄: %d" % (name, age))  # 输出: 姓名: Alice, 年龄: 30

pi = 3.1415926
print("圆周率: %.2f" % pi)  # 输出: 圆周率: 3.14(保留2位小数)

num = 255
print("十六进制: %x" % num)  # 输出: 十六进制: ff

2. 高级格式化技巧

指定宽度:通过 %Nd(整数)或 %N.Mf(浮点数)控制输出宽度和精度。

print("数字: %5d" % 3)    # 输出: 数字:     3(占5位,右对齐)
print("浮点数: %8.2f" % pi)  # 输出: 浮点数:    3.14(总宽度8,保留2位小数)

左对齐:在宽度前加 - 实现左对齐。

print("左对齐: %-5d" % 3)  # 输出: 左对齐: 3    

字典格式化:使用 %(key)s 从字典中取值,增强可读性。

user = {"name": "Bob", "score": 95}
print("姓名: %(name)s, 分数: %(score)d" % user)  # 输出: 姓名: Bob, 分数: 95

3. 注意事项

  • 占位符数量需与后面的变量数量一致,否则会抛出 TypeError
  • 虽然 Python 3.6+ 引入了更强大的 f-字符串(如 f"姓名: {name}"),但 % 格式化在旧代码中仍常见,需了解其用法。

三、总结

% 操作符在 Python 中有两种核心用法:

  • 取余运算:计算除法余数,用于奇偶判断、整除校验、循环取值等场景,结果符号与除数一致。
  • 字符串格式化:通过占位符替换变量,支持多种数据类型和格式控制,是传统的字符串拼接方式。

根据场景灵活使用 % 的两种功能,能让代码更简洁、高效。在现代 Python 开发中,取余运算仍被广泛使用,而字符串格式化则可根据需求选择 %、f-字符串或 str.format()

到此这篇关于Python通过%操作符进行取余运算与字符串格式化的深度解析的文章就介绍到这了,更多相关Python操作符%内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python的消息队列包SnakeMQ使用初探

    Python的消息队列包SnakeMQ使用初探

    使用消息队列在数据的通信中拥有很多优点,SnakeMQ是一个开源的用Python实现的跨平台MQ库,well,Python的消息队列包SnakeMQ使用初探,here we go:
    2016-06-06
  • virtualenv实现多个版本Python共存

    virtualenv实现多个版本Python共存

    virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够:1. 在没有权限的情况下安装新套件 2. 不同应用可以使用不同的套件版本 3. 套件升级不影响其他应用
    2017-08-08
  • python正则表达中的re库常用方法总结

    python正则表达中的re库常用方法总结

    这篇文章主要介绍了python正则表达中的re库常用方法总结文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-08-08
  • 一文详解Python中实现单例模式的几种常见方式

    一文详解Python中实现单例模式的几种常见方式

    这篇文章主要为大家介绍了Python中实现单例模式的几种常见方式示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Django创建一个后台的基本步骤记录

    Django创建一个后台的基本步骤记录

    这篇文章主要给大家介绍了关于Django创建一个后台的基本步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Python Django搭建文件下载服务器的实现

    Python Django搭建文件下载服务器的实现

    这篇文章主要介绍了Python Django搭建文件下载服务器的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • Python使用Pendulum优雅处理日期与时间

    Python使用Pendulum优雅处理日期与时间

    在日常开发中,日期和时间的处理一直是让人头疼的事情,本文将全面介绍 pendulum 的特点,用法以及典型应用场景,希望可以帮助大家在实际项目中优雅地处理时间逻辑
    2025-06-06
  • Python按条件批量删除TXT文件行工具

    Python按条件批量删除TXT文件行工具

    这篇文章主要为大家详细介绍了Python如何实现按条件批量删除TXT文件中行的工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-12-12
  • python输出国际象棋棋盘的实例分享

    python输出国际象棋棋盘的实例分享

    在本篇文章里小编给大家整理的是一篇关于python输出国际象棋棋盘的实例详解,有兴趣的朋友们可以参考下。
    2020-11-11
  • Python cookbook(数据结构与算法)字典相关计算问题示例

    Python cookbook(数据结构与算法)字典相关计算问题示例

    这篇文章主要介绍了Python字典相关计算问题,结合实例形式总结分析了Python字典相关的最小值、最大值、排序等操作相关实现技巧,需要的朋友可以参考下
    2018-02-02

最新评论