目录
2、f-string 字面量格式化字符串(python3.6之后版本添加)
3.1 str.format可以接受多个参数,位置可以不按顺序
3.2 str.format可以设置参数、通过字典设置参数、通过列表索引设置参数
print()函数用于打印输出。在python3.x中是一个函数,但在Python2.x中只是一个关键字。
print(*objects,sep=' ',end='\n', file=sys.stdout, flush=false)
object:复数,表示可以一次输出多个对象。输出多个对象时,需要用‘,’分隔。
sep:用来间隔多个对象,默认值是一个空格。
end:用来设定以什么结尾。默认值是换行符\n。
file:要写入的文件对象。
flush:输出是否被缓存通常巨顶与file,但如果flush关键字参数为True,流会被强制刷新
无
print("hello", "world")#输出为:hello world
print("hello", "world", sep="---")#输出为:hello---world
print("hello", "world", sep="---",end=".")#输出为:hello---world.
最基本的用法是讲一个值插入到一个有格式符%的字符串中,与C中的print函数的用法类似,%[ [(name)] [flag] [width] [.precision] ] typecode。
name:可选参数,当需要格式化的值为字典类型时,用于指定字典的key
flag:可选参数,可供选择的值有+(表示右对齐,正数前添加正号,负数前添加负号)、-(表示左对齐,正数前无符号,负数前添加负号)、空格(表示右对齐,正数前添加空格,负数前添加负号)、0(表示右对齐,正数前无符号,负数前添加负号,并用0填充空白处)
width:可选参数,指定格式字符串的占用宽度
percision:可选参数,指定数值型数据保留的小数位数
typecode:必选参数,指定格式控制符
。示例如下:
print("%d、 hello world"%(1)) #输出为1、 hello world
python字符串格式化控制符号如下:
| 符号 | 描述 |
| %c | 格式化字符及其ASCII码 |
| %s | 格式化字符串 |
| %d | 格式化整数 |
| %u | 格式化无符号整型 |
| %o | 格式化无符号八进制数 |
| %x | 格式化无符号十六进制数 |
| %X | 格式化无符号十六进制数(大写) |
| %f | 格式化浮点数字,可指定小数点后的精度 |
| %e | 用科学计数法格式化浮点数 |
| %E | 作用同%e,用科学计数法格式化浮点数 |
| %g | %f和%e的简写 |
| %G | %f 和 %E 的简写 |
| %p | 用十六进制数格式化变量的地址 |
格式化操作符辅助指令:
| 符号 | 功能 | 示例 |
| * | 定义宽度或者小数点精度 | print("%*.*f、 hello world"%(6,2,1)) #输出为 1.00、 hello world 表示6个位宽,2个小数位(小数点也是占一个位宽的) |
| - | 表示左对齐,正数前无符号,负数前添加负号 | print("%-*.*f、 hello world"%(6,2,-1))#输出为-1.00 、 hello world 表示左对齐输出,即固定位宽时不足的在右边补空格 |
| + | 表示右对齐,正数前添加正号,负数前添加负号 | print("%+-*.*f、 hello world"%(6,2,1))#输出为+1.00 、 hello world 在正数前面加'+'号 |
| 表示右对齐,正数前添加空格,负数前添加负号 | 没有体会到实际有啥意义,期待大佬们补充 | |
| # | 在八进制数钱显示“0o”,十六进制钱显示“0x” | print("%#o、 hello world"%(10))#输出为0o12、 hello world print("%#x、 hello world"%(10))#输出为0xa、 hello world |
| 0 | 显示的数字前面填充'0'而不是默认的空格 | print("%0*.*f、 hello world"%(6,2,1)) #输出为001.00、 hello world 在数字前面填充'0'而不是默认的空格 print("%0-*.*f、 hello world"%(6,2,1))#输出为1.00 、 hello world 需要注意的是左对齐时是无效的,否则会更改数值大小 |
| % | “%%”输出一个单一的‘%’ | print("%%%#x、 hello world"%(10))#输出为%0xa、 hello world |
f-string格式化字符串以f开头,后面跟着字符串,字符串中的表达式用大括号{}包起来,它会将变量或表达式计算后的值替换进去。示例如下:
- name = "Gavin"
- print(f"hello {name}") #输出为:hello Gavin
- print(f"value:{1+2}"); #输出为:value:3
格式化字符串的方法str.format(),它增强了字符串格式化的功能。基本语法是通过{}和:来代替%.调用此方法的字符串可以包含字符串字面值或者以花括号{}括起来的替换域。每个替换域可以包含一个位置参数的数字索引,或者一个关键字参数的名称。返回的字符串副本中每个替换域都会被替换为对应参数的字符串值。
示例如下:
- print("{} {}".format("hello", "world"))#输出为:hello world
- print("{0} {1}".format("hello", "world"))#输出为:hello world
- print("{1} {0}".format("hello", "world"))#输出为:world hello
- #设置参数
- print("name:{name},age:{age}".format(age=24,name="Gavin"))#输出为:name:Gavin,age:24
- #通过字典设置参数
- my_dict = {"name":"Gavin","age":24}
- print("name:{name},age:{age}".format(**my_dict))#输出为:name:Gavin,age:24
- #通过列表索引设置参数
- my_list = ["Gavin",24]
- print("name:{0[0]},age:{0[1]}".format(my_list))#输出为:name:Gavin,age:24,其中0表示第一个参数
| 输入数字 | 格式 | 输出 | 描述 |
| 3.1415926 | {:.2f} | 3.14 | 保留小数点后两位 |
| 3.1415926 | {:+.2f} | +3.14 | +:全部数字均带有符号 |
| -1 | {:-.2f} | -1.00 |
|
| 3.1415926 | {:.0f} | 3 | 不带小数 |
| 5 | {:0>2d} | 05 | 数字补零 (填充左边, 宽度为2) |
| 5 | {:x<4d} | 5xxx | 数字补x (填充右边, 宽度为4) |
| 1000000 | {:,} | 1,000,000 | 以逗号分隔的数字格式 |
| 0.25 | {:.2%} | 25.00% | 百分比格式 |
| 1000000000 | {:.2e} | 1.00e+09 | 指数记法 |
| 13 | {:>10d} | 13 | 右对齐 (默认, 宽度为10) |
| 13 | {:<10d} | 13 | 左对齐 (宽度为10) |
| 13 | {:^10d} | 13 | 中间对齐 (宽度为10) |
| 11 | '{:b}'.format(11)
'{:d}'.format(11)
'{:o}'.format(11)
'{:x}'.format(11)
'{:#x}'.format(11)
'{:#X}'.format(11) | 1011 11 13 b 0xb 0XB | 进制(b、d、o、x 分别是二进制、十进制、八进制、十六进制) |
4、 手动格式化字符串
示例如下
- num1 = 10
- num2 = 5
-
- print(num1, "÷", num2, " = ", num1 / num2) #输出为:10 ÷ 5 = 2.0
示例如下
- num1 = 10
- num2 = 5
-
- print("num1 = "+str(num1)+",num2 = "+str(num2)) #输出为:num1 = 10,num2 = 5