Python之%s%d%f

本文详细介绍了在编程中如何使用各种格式化输出方法,包括字符串、整数和浮点数的格式化技巧。针对不同的数据类型,文章展示了如何通过特定的格式化指令来控制输出的宽度、精度以及对齐方式等。

%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  


<think> 我们参考了多个引用源,它们都详细解释了Python中格式化字符串的%运算符用法,特别是%s、%d和%f。 引用[1]提到:%s用于字符串,%d用于整数,%f用于浮点数。并强调了它们用于将不同类型数据嵌入字符串。 引用[2]给出了具体示例,解释了%s是替换字符串,%d是打印整数。 引用[3]和[4]给出了更全面的格式化符号表,包括其他符号如%o(八进制)、%x(十六进制)、%e(科学计数法)等。 根据这些信息,我们可以总结如下: 1. %s:用于格式化字符串,可以将任何对象转换为字符串表示(使用str()函数)。 2. %d:用于格式化有符号十进制整数。如果传入的是浮点数,则会截断为整数(不会四舍五入)?注意:实际上,%d要求传入的是整数或可以转换为整数的对象,如果传入浮点数,它会先被转换为整数(即去掉小数部分)。 3. %f:用于格式化浮点数,默认保留6位小数。可以指定精度,例如%.2f表示保留两位小数。 此外,我们还可以通过一个元组同时格式化多个值。 注意:这种格式化方式有时被称为“旧式字符串格式化”,在Python3中仍然支持,但更推荐使用format()方法或者f-string(Python3.6+)。 下面我们给出具体的示例代码和解释。 </think> ### Python中%s、%d、%f的用法详解 在Python中,`%s`、`%d`、`%f`是**旧式字符串格式化**的核心操作符,用于将不同类型的数据嵌入字符串中。 #### 📌 基础用法 ```python # 语法模板 "包含占位符的字符串" % 值 "包含占位符的字符串" % (值1, 值2, ...) ``` #### 🔍 常用占位符详解 1. **`%s` - 字符串格式化** - 适用于所有对象(自动调用`str()`转换) ```python name = "Alice" print("Hello, %s!" % name) # 输出: Hello, Alice! print("Type: %s" % type(name)) # 输出: Type: <class 'str'> ``` 2. **`%d` - 整数格式化** - 仅接受整数或可转换为整数的对象 ```python age = 25 print("Age: %d" % age) # 输出: Age: 25 print("Hex: %d" % 0xFF) # 输出: Hex: 255 ``` 3. **`%f` - 浮点数格式化** - 默认保留6位小数 - 支持精度控制:`%.Nf`(N=小数位数) ```python pi = 3.1415926 print("PI: %f" % pi) # 输出: PI: 3.141593 print("PI: %.2f" % pi) # 输出: PI: 3.14 ``` #### ⚙️ 高级特性 - **多值格式化**(使用元组): ```python print("%s is %d years old. Score: %.1f" % ("Bob", 30, 89.75)) # 输出: Bob is 30 years old. Score: 89.8 ``` - **宽度与对齐**: ```python print("Name: %10s" % "Tom") # 右对齐: "Name: Tom" print("ID: %-10d" % 123) # 左对齐: "ID: 123 " ``` - **字典格式化**: ```python data = {"name": "Eva", "age": 28} print("Name: %(name)s, Age: %(age)d" % data) ``` #### ️ 注意事项 1. **类型匹配**:`%d`要求整型值,若传递字符串会报`TypeError` 2. **现代替代方案**: - `str.format()`方法(Python 2.6+) - **f-string**(Python 3.6+,推荐): ```python print(f"PI: {pi:.2f}") # 输出: PI: 3.14 ``` > 旧式格式化源于C语言的`printf`风格,在遗留代码中常见,但新项目建议使用f-string以获得更好可读性和性能[^1][^3]。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值