Python格式化输出专项练习1

课后整理 2020-12-20

%格式化输出

整数的输出(参照ASCII)

简单提示:
%o —— oct 八进制
%d —— dec 十进制(digit )
%x —— hex 十六进制
print('%o' % 20)
print('%d' % 20)
print('%x' % 20)

'''
24
20
14
'''

浮点数输出

简单提示:
%f —— float 保留小数点后面六位有效数字
%.3f,保留3位小数位
%e —— 保留小数点后面六位有效数字,指数形式输出
%.3e,保留3位小数位,使用科学计数法
%g —— 在保证六位有效数字的前提下,使用小数方式,否则使用科学计数法
%.3g,保留3位有效数字,使用小数或科学计数法
print('%f' % 1.11)  # 默认保留6位小数
# 1.110000
print('%.1f' % 1.11)  # 取1位小数
# 1.1
print('%e' % 1.11)  # 默认6位小数,用科学计数法
# 1.110000e+00
print('%.3e' % 1.11)  # 取3位小数,用科学计数法
# 1.110e+00
print('%g' % 1111.1111)  # 默认6位有效数字
# 111.11
print('%.7g' % 1111.1111)  # 取7位有效数字
# 1111.111
print('%.2g' % 1111.1111)  # 取2位有效数字,自动转换为科学计数法
# 1.1e+03

字符串输出

简单提示:
%s —— string 字符串
%10s —— 右对齐,占位符10位
%-10s —— 左对齐,占位符10位
%.2s —— 截取2位字符串
%10.2s —— 10位占位符,截取两位字符串
print('%s' % 'hello world')  # 字符串输出
# hello world
print('%20s' % 'hello world')  # 右对齐,取20位,不够则补位
#          hello world
print('%-20s' % 'hello world')  # 左对齐,取20位,不够则补位
# hello world         
print('%.2s' % 'hello world')  # 取2位
# he
print('%10.2s' % 'hello world')  # 右对齐,取2位
#         he
print('%-10.2s' % 'hello world')  # 左对齐,取2位
# he

编写程序,调查用户的姓名、年龄、职业和薪水,然后格式化输出用户信息,格式如下所示

------------info of 张三------------
Name:张三
Age:24
Job:计算机
Salary:52000
----------------end---------------
name = input("Name:")
age = int(input("Age:"))
job = input("Job:")
salary = int(input("Salary:"))

msg = """
------------info of %s------------
Name:%s
Age:%d
Job:%s
Salary:%d
----------------end---------------
"""%(name,name,age,job,salary)

print(msg)

format 格式化

str.format()函数把字符串当成一个模板,通过传入的参数进行格式化,并且使用大括号 "{ }" 作为特殊字符代替"%"。

format格式化输出语法详解

{}中不设参数

    
print( "{} {}".format("hello", "world") )   # 不设置指定位置,按默认顺序
# 'hello world'
 
print( "{0} {1}".format("hello", "world") )  # 设置指定位置
# 'hello world'
 
print( "{1} {0} {1}".format("hello", "world") ) # 设置指定位置
# 'world hello world'

{}中设参数

# 通过变量设置参数
print("My name is {name},and I am {age} years old!".format(name = "zhangsan",age = "25"))

# 通过字典设置参数,需要解包
info = {"name": "zhangsan", "age": "25"}
print("My name is {name},and I am {age} years old!".format(**info))

# 通过列表索引设置参数
msg = ["zhangsan","25"]
print("My name is {0[0]},and I am {0[1]} years old!".format(msg))

'''
My name is zhangsan,and I am 25 years old!
My name is zhangsan,and I am 25 years old!
My name is zhangsan,and I am 25 years old!
'''

str.format() 格式化数字

简单提示:
^、<、>分别是居中、左对齐、右对齐,后面带宽度。
:号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。
+ 表示在正数前显示+,负数前显示 -。(空格)表示在正数前加空格
  
print("{:.2f}".format( 3.1415926 ))   # 保留小数点后两位
# 3.14
print("{:+.2f}".format( 3.1415926 ))   # 带符号保留小数点后两位
# +3.14
print("{:+.2f}".format( -1 ))   # 带符号保留小数点后两位
# -1.00
print("{:.0f}".format( 2.71828 ))   # 不带小数
# 3	
print("{:0>2d}".format( 5 ))   # 数字补零 (填充左边, 宽度为2)
# 05
print("{:x<4d}".format( 5 ))   # 数字补x (填充右边, 宽度为4)	
# 5xxx	
print("{:x<4d}".format( 10 ))   # 数字补x (填充右边, 宽度为4)
# 10xx	
print("{:,}".format( 1000000 ))   # 以逗号分隔的数字格式
# 1,000,000	
print("{:.2%}".format( 0.25 ))   # 百分比格式
# 25.00%	
print("{:.2e}".format( 1000000000 ))   # 指数记法
# 1.00e+09	
print("|{:>10d}|".format( 13 ))   # 右对齐 (默认, 宽度为10)
# |        13|	
print("|{:<10d}|".format( 13 ))   # 左对齐 (宽度为10)
# |13        |	
print("|{:^10d}|".format( 13 ))   # 中间对齐 (宽度为10)
# |    13    |	
print ("{}今年{{25}}岁了".format("张三")) # 使用大括号 {} 来转义大括号
# 张三今年{25}岁了