零py-(ep-23)
本帖最后由 Nicole37 于 2023-10-26 15:35 编辑字符串6:格式化字符串:[align][#][.precision]
符号选项::仅对数字类型有效
#符号设置
"{:+}{:-}".format(250,-250)
'+250-250'
#正号可以加在正数前表示正数,减号加在负数前或者不加
#使用逗号或者下横线表示千位分割符
"{:,}".format(123456)
'123,456'
"{:_}".format(49565)
'49_565'
#精度参数
#对于设置为‘f’或‘F’的浮点数来说,是限定小数点后显示多少个数位
#对于设置为‘g’或‘G’的浮点数来说,是限定小数点前后显示多少个数位
#对于非数字类型,限定最大字段的大小
"{:.2f}".format(3.1415926)
'3.14'
"{:.2g}".format(3.1415926) #显示小数点前后一共有两位
'3.1'
"{:.6}".format("what is wrong with you")
'what i'
"{:.8}".format(666)#精度选项不能用于整数
Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
"{:.8}".format(666)#精度选项不能用于整数
ValueError: Precision not allowed in integer format specifier
#决定如何呈现数据形式
"{:b}".format(70) #b对于整数来说是以其2进制形式输出
'1000110'
"{:c}".format(70) #b对于整数来说是以其unicode字符的形式输出
'F'
"{:d}".format(70) #d对于整数来说是以其十进制形式输出
'70'
"{:o}".format(70) #d对于整数来说是以其八进制形式输出
'106'
"{:x}".format(70) #x/X对于整数来说是以其十六进制形式输出
'46'
"{:#o}".format(70) #井号会在整数前显示其进制类型
'0o106'
"{:#c}".format(70)
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
"{:#c}".format(70)
ValueError: Alternate form (#) not allowed with integer format specifier 'c'
#适用于浮点数或者复数de
"{:e}".format(3.1415)#将参数以科学计数法的形式输出(e表示指数,默认精度为6)
'3.141500e+00'
"{:E}".format(3.1415)
'3.141500E+00'
"{:e}".format(3.1415)#'f'将参数以定点标识法的形式输出(不是数用’nan‘,无穷’inf‘,默认精度为6)
'3.141500e+00'
"{:f}".format(3.1415)#'f'将参数以定点标识法的形式输出(不是数用’nan‘,无穷’inf‘,默认精度为6)
'3.141500'
"{:g}".format(123456789)#'g'/'G' 通用格式,较小的数以'f'/'F'形式输出,较大的数以'e'/'E'形式输出
'1.23457e+08'
"{:g}".format(123.456789)
'123.457'
"{:%}".format(0.95)#'%'以百分比的形式输出
'95.000000%'
"{:.2%}".format(0.95)
'95.00%'
#python支持通过关键字参数来设置选项的值
"{:.{jingdu}f}".format(5.14896,jingdu=3)
'5.149'
"{:{fill}{align}{width}.{prec}{typ}}".format(3.1415926,fill='+',align='^',width=20,prec=5,typ='G')
'+++++++3.1416+++++++'
#f-字符串,在字符串前添加f/F,实现format功能
a =100
f"考试分数{a}"#把关键字直接打在花括号里
'考试分数100'
f"1+2={1+2}"
'1+2=3'
f"{123.456789:g}" #数字写在冒号左侧
'123.457'
f"{3.1415:e}"
'3.141500e+00'
#f字符串适用于 3.6+以上python机器
作业:
动手0:压缩字符串
z=input("请输入待压缩的字符串:")
i=0
b=[]
r=[]
while i< len(z):
a = z.count(z)
b.append(z)
b.append(',')
i=i+a
c="".join(b)
f=c.split(',')
for i in f:
if len(i)<3:
r.append(i)
else:
r.append(i)
r.append("{}".format(len(i)))
p="".join(r)
print("压缩后的字符串:",p)
w ="{:.2%}".format(len(p)/len(z))
print("压缩率为:",w)
1:解压字符串
z=input("请输入待解压的字符串:")
u=[]
i=0
while i+1<len(z):
for i in range(len(z)):
if z.isalpha() and z.isdigit():
u.append(z*int(z))
else:
if z.isalpha():
u.append(z)
print("解压后的字符串:","".join(u))
作业答案:
5.format与f转化:
"{:{fill}{align}{width}.{prec}{ty}}".format(3.1415, fill='$', align='^', width=10, prec=2, ty='f')
f"{3.1415:$^10.2f}"
注意:可初始化字符串 ,直接进行字符串的append,用+进行连接
a=''
a += b
页:
[1]