Python%格式化输出

% 操作符

>>> name = "lumiere"
>>> age = 21
>>> print("My name is %s and I am %d years old." % (name, age))
My name is lumiere and I am 21 years old.

'%[-][+][0][m][.n]格式化字符'%exp
'- + ':指定左右对齐
0 右对齐,与m一起使用,用0填补空白
m:占有宽度
n:小数后保留位数

数字

浮点数

m.nm 是最小字段宽度,n 是小数点后的位数
对齐和填充

<:左对齐(默认)。
>:右对齐。
^:居中对齐。
=:在符号之后填充。

%f

保留小数点后六位有效数字
使用 %f 格式化时,默认会保留六位小数。

number = 123.456789
print("Number with default six decimal places: %f" % number)

输出:

Number with default six decimal places: 123.456790

%F:等同于%f,但不会添加小数点后的尾随零。

%.nf

保留小数点后n位
注意此处n可大于6

number = 123.456789
print("Number with three decimal places: %.3f" % number)

输出:

Number with three decimal places: 123.457

%e

使用 %e 会以科学计数法的形式输出,默认保留六位小数。

number = 123456789
print("Number in scientific notation: %e" % number)

输出:

Number in scientific notation: 1.234568e+08

%.ne

保留n位有效数字,以指数形式使用科学计数法输出

number = 123456789
print("Number in scientific notation with three decimal places: %.3e" % number)

输出:

Number in scientific notation with three decimal places: 1.235e+08

%g

若有效数字小于六位则使用小数方式,否则使用科学计数法

number_small = 123.456
number_large = 123456789
print("Small number with %g: %g" % (number_small, number_small))
print("Large number with %g: %g" % (number_large, number_large))

输出:

Small number with %g: 123.456
Large number with %g: 1.23457e+08

n位同理

整数

%o

%o 将整数格式化为八进制表示。

number = 255
print("Number in octal: %o" % number)

输出:

Number in octal: 377

%d

%d 是整数的默认表示。

number = 255
print("Number in decimal: %d" % number)

输出:

Number in decimal: 255

%x

%x 将整数格式化为十六进制表示,不使用前缀0x

number = 255
print("Number in hexadecimal: %x" % number)

输出:

Number in hexadecimal: ff

十六进制数带有前缀0x,使用 %#x

number = 255
print("Number in hexadecimal with prefix: %#x" % number)

输出:

Number in hexadecimal with prefix: 0xff

注意,这些格式化占位符仅适用于整数

整数格式化

%u:无符号十进制整数。
%c:将整数转换为相应的Unicode字符。

round(number[, ndigits])

number:需要四舍五入的数字
ndigits:表示需要四舍五入到的小数点后的位数。如果省略,则默认四舍五入到最接近的整数
ndigits为负数,则表示四舍五入到小数点左边相应的位置
“银行家舍入法”:当数字恰好等于两个整数的中间值时,round() 函数通常会将数字四舍五入到最近的偶数。

# 四舍五入到最近的整数
print(round(3.14159))  # 输出: 3

# 四舍五入到小数点后两位
print(round(3.14159, 2))  # 输出: 3.14

# 四舍五入到小数点后三位
print(round(3.14159, 3))  # 输出: 3.142

# 四舍五入到小数点前一位(即十位)
print(round(12345, -1))  # 输出: 12340

# 四舍五入到小数点前两位(即百位)
print(round(12345, -2))  # 输出: 12300

# 四舍五入到最近的偶数
print(round(2.5))  # 输出: 2
print(round(3.5))  # 输出: 4

字符串

%s:格式化字符串。将变量转换为字符串形式。
%ns:右对齐,占位符为n位。如果字符串长度小于n,则在左侧填充空格。
%-ns:左对齐,占位符为n位。如果字符串长度小于n,则在右侧填充空格。
%.ns:截取n位字符串。如果字符串长度大于n,则只保留前n位。
%n.ms:n位占位符,截取m位字符串。如果字符串长度小于m,则在左侧填充空格以保持总长度为n;如果字符串长度大于m,则只保留前m位。

name = 'Lumiere'
age = 21
pi = 3.141592653589793
# 使用 %s 格式化字符串
print("My name is %s." % name)  # 输出: My name is Lumiere.
print('%s' % 'hello world')  # 输出: hello world
# 使用 %ns 右对齐
print('%20s' % 'hello world')  # 输出:                 hello world
# 使用 %-ns 左对齐
print("Name: %-10.3s" % name)  # 输出: Name: Lum
# 使用 %.ns 截取5位字符串
print("Pi: %.5s" % str(pi))  # 输出: Pi: 3.141
# 使用 %n.ms n位占位符,截取m位字符串
print("Pi: %10.5s" % str(pi))  # 输出: Pi:       3.141
print("Pi: %-10.5s" % str(pi))  # 输出: Pi: 3.141
posted @ 2025-03-08 16:36  lumiere_cloud  阅读(6)  评论(0)    收藏  举报