Python中%s、%d、%f意义及用法详解

博客提及Python中的格式化符号,如%s、%d、%f等,还给出了转载来源为https://blog.youkuaiyun.com/The_Time_Runner/article/details/86522952 。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

%s:

string="hello"  
  
#%s打印时结果是hello  
print "string=%s" % string      # output: string=hello  
  
#%2s意思是字符串长度为2,当原字符串的长度超过2时,按原长度打印,所以%2s的打印结果还是hello  
print "string=%2s" % string     # output: string=hello  
  
#%7s意思是字符串长度为7,当原字符串的长度小于7时,在原字符串左侧补空格,  
#所以%7s的打印结果是  hello  
print "string=%7s" % string     # output: string=  hello  
  
#%-7s意思是字符串长度为7,当原字符串的长度小于7时,在原字符串右侧补空格,  
#所以%-7s的打印结果是  hello  
print "string=%-7s!" % string     # output: string=hello  !  
  
#%.2s意思是截取字符串的前2个字符,所以%.2s的打印结果是he  
print "string=%.2s" % string    # output: string=he  
  
#%.7s意思是截取字符串的前7个字符,当原字符串长度小于7时,即是字符串本身,  
#所以%.7s的打印结果是hello  
print "string=%.7s" % string    # output: string=hello  
  
#%a.bs这种格式是上面两种格式的综合,首先根据小数点后面的数b截取字符串,  
#当截取的字符串长度小于a时,还需要在其左侧补空格  
print "string=%7.2s" % string   # output: string=     he  
print "string=%2.7s" % string   # output: string=hello  
print "string=%10.7s" % string  # output: string=     hello  
  
#还可以用%*.*s来表示精度,两个*的值分别在后面小括号的前两位数值指定  
print "string=%*.*s" % (7,2,string)      # output: string=     he 

%d

num=14  
  
#%d打印时结果是14  
print "num=%d" % num            # output: num=14  
  
#%1d意思是打印结果为1位整数,当整数的位数超过1位时,按整数原值打印,所以%1d的打印结果还是14  
print "num=%1d" % num           # output: num=14  
  
#%3d意思是打印结果为3位整数,当整数的位数不够3位时,在整数左侧补空格,所以%3d的打印结果是 14  
print "num=%3d" % num           # output: num= 14  
  
#%-3d意思是打印结果为3位整数,当整数的位数不够3位时,在整数右侧补空格,所以%3d的打印结果是14_  
print "num=%-3d" % num          # output: num=14_  
  
#%05d意思是打印结果为5位整数,当整数的位数不够5位时,在整数左侧补0,所以%05d的打印结果是00014  
print "num=%05d" % num          # output: num=00014  
  
#%.3d小数点后面的3意思是打印结果为3位整数,  
#当整数的位数不够3位时,在整数左侧补0,所以%.3d的打印结果是014  
print "num=%.3d" % num          # output: num=014  
  
#%.0003d小数点后面的0003和3一样,都表示3,意思是打印结果为3位整数,  
#当整数的位数不够3位时,在整数左侧补0,所以%.3d的打印结果还是014  
print "num=%.0003d" % num       # output: num=014  
  
#%5.3d是两种补齐方式的综合,当整数的位数不够3时,先在左侧补0,还是不够5位时,再在左侧补空格,  
#规则就是补0优先,最终的长度选数值较大的那个,所以%5.3d的打印结果还是  014  
print "num=%5.3d" % num         # output: num=  014  
  
#%05.3d是两种补齐方式的综合,当整数的位数不够3时,先在左侧补0,还是不够5位时,  
#由于是05,再在左侧补0,最终的长度选数值较大的那个,所以%05.3d的打印结果还是00014  
print "num=%05.3d" % num        # output: num=00014  
  
#还可以用%*.*d来表示精度,两个*的值分别在后面小括号的前两位数值指定  
#如下,不过这种方式04就失去补0的功能,只能补空格,只有小数点后面的3才能补0  
print "num=%*.*d" % (04,3,num)  # output: num= 014  

%f

import math  
  
#%a.bf,a表示浮点数的打印长度,b表示浮点数小数点后面的精度  
  
#只是%f时表示原值,默认是小数点后5位数  
print "PI=%f" % math.pi             # output: PI=3.141593  
  
#只是%9f时,表示打印长度9位数,小数点也占一位,不够左侧补空格  
print "PI=%9f" % math.pi            # output: PI=_3.141593  
  
#只有.没有后面的数字时,表示去掉小数输出整数,03表示不够3位数左侧补0  
print "PI=%03.f" % math.pi          # output: PI=003  
  
#%6.3f表示小数点后面精确到3位,总长度6位数,包括小数点,不够左侧补空格  
print "PI=%6.3f" % math.pi          # output: PI=_3.142  
  
#%-6.3f表示小数点后面精确到3位,总长度6位数,包括小数点,不够右侧补空格  
print "PI=%-6.3f" % math.pi         # output: PI=3.142_  
  
#还可以用%*.*f来表示精度,两个*的值分别在后面小括号的前两位数值指定  
#如下,不过这种方式06就失去补0的功能,只能补空格  
print "PI=%*.*f" % (06,3,math.pi)   # output: PI=_3.142  

转载至 https://blog.youkuaiyun.com/The_Time_Runner/article/details/86522952

<think>我们正在讨论Python中的格式化输出,特别是%d的含义和用法。根据引用[3],我们知道在Python中,%d是一个格式化符号,用于表示将整数转换为十进制表示并插入到字符串中。在旧的字符串格式化方法(使用%操作符)中,%d被广泛使用。使用场景:1.在字符串中,我们可以使用%d作为占位符,然后通过%操作符将一个整数或者可以转换为整数的值传递给它。2.基本语法:"包含%d的字符串"%(整数或整数表达式)3.如果有多个占位符,可以使用元组传递多个值。示例:单个占位符:print("我今年%d岁"%20)#输出:我今年20岁多个占位符:print("我有%d个苹果和%d个橙子"%(3,5))#输出:我有3个苹果和5个橙子注意:%d只能用于整数,如果传入的是浮点数,它会自动截断小数部分(不会四舍五入)。例如:print("%d"%3.14)#输出:3另外,还可以在%d中间加入格式控制,例如:%[宽度]d:指定输出的整数至少占多少位,不足的用空格补齐,默认右对齐。%0[宽度]d:用0补齐不足的位数。%-[宽度]d:左对齐。示例:print("%5d"%10)#输出:10(前面有3个空格)print("%05d"%10)#输出:00010print("%-5d"%10)#输出:10(后面有3个空格)需要注意的是,这种格式化方式在Python中被称为“旧式字符串格式化”,在Python3中,更推荐使用format方法或f-string(在Python3.6+)。但为了兼容性,%操作符仍然被支持。引用[3]中还提到了一些其他的格式化符号,比如%s(字符串)、%f(浮点数)等,但这里我们专注于%d。因此,总结一下:%d是用于格式化整数的占位符,在需要将整数嵌入字符串时使用,可以通过%操作符进行替换。根据上述内容,我们可以生成相关问题。</think>### Python 中 `%d` 的含义及用法详解 `%d` 是 Python 的**格式化占位符**,用于在字符串中表示**十进制整数**(digit)。它属于 Python 的旧式字符串格式化语法(`%` 操作符),主要功能是将整数变量或表达式嵌入到字符串的指定位置。 #### 核心作用 1. **整数占位**:在字符串模板中标记整数插入位置 2. **类型转换**:自动将非整数数据转换为整数(如 `float` → 截断小数) 3. **格式化控制**:支持对齐、补零、宽度等格式设置 --- ### 基础语法 ```python 格式化字符串 % (值1, 值2, ...) ``` 其中 `%d` 作为整数占位符,与右侧元组中的值按顺序匹配。 #### 示例场景 ```python # 单整数替换 age = 25 print("年龄: %d 岁" % age) # 输出: 年龄: 25 岁 # 多整数替换 x, y = 3, 7 print("坐标: (%d, %d)" % (x, y)) # 输出: 坐标: (3, 7) # 自动类型转换 price = 99.99 print("价格: %d 元" % price) # 输出: 价格: 99 元(截断小数) ``` --- ### 高级格式化选项 通过 `%[格式]d` 语法实现精细控制: | 格式 | 示例 | 效果 | 说明 | |-----------|--------------------|-------------------|-----------------------| | 宽度对齐 | `%5d` % 42 | ` 42` | 右对齐, 宽度5 | | 左对齐 | `%-5d` % 42 | `42 ` | 左对齐, 宽度5 | | 补零 | `%05d` % 42 | `00042` | 宽度5, 不足补零 | | 符号显示 | `%+d` % 42 | `+42` | 强制显示正负号 | #### 复杂示例 ```python # 格式化商品编号 product_id = 305 print("编号: %08d" % product_id) # 输出: 编号: 00000305 # 带符号温度显示 temp = -5 print("温度: %+d℃" % temp) # 输出: 温度: -5℃ ``` --- ### 注意事项 1. **类型匹配**:`%d` 只接受整数或可转为整数的值,字符串会触发 `TypeError` ```python # 错误示例 print("%d" % "10") # TypeError: %d format: number required ``` 2. **现代替代方案**: - **f-string** (Python 3.6+):`print(f"价格: {price} 元")` - **str.format()**:`print("坐标: ({}, {})".format(x, y))` 3. **截断特性**:浮点数转换时直接丢弃小数部分(非四舍五入) > 虽然 `%d` 仍广泛存在于旧代码中,但官方推荐优先使用 `f-string` 或 `str.format()` 以获得更好的可读性和灵活性[^3]。 --- ### 典型应用场景 1. **日志记录**:生成带行号的日志 `[%d] 错误信息` 2. **数据报表**:固定宽度的数值表格输出 3. **文件命名**:批量生成有序文件名 `image_%03d.jpg` 4. **硬件交互**:处理寄存器地址等底层整数值
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值