%格式化输出
整数的输出(参照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()函数把字符串当成一个模板,通过传入的参数进行格式化,并且使用大括号 "{ }" 作为特殊字符代替"%"。
{}中不设参数
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}岁了