%d、%f、字符串格式的方法%s、format和python3.6新特性f-string和类型注解

一、%s

# 1.位置参数的形式
msg = '我叫%s,今年%s,性别%s' % ('帅哥',18,'')
print(msg)  # 我叫帅哥,今年18,性别男

# 2.关键字参数的形式
msg = '我叫%(name)s,今年%(age)s,性别%(sex)s' % {"name": "帅哥", "age": 18, "sex": ""}
print(msg)  # 我叫帅哥,今年18,性别男
复制代码
string = "hello"

# %s打印时结果是hello
print("string=%s" % string)  # output: string=hello

# %2s意思是字符串长度为2,当原字符串的长度超过2时,按原长度打印,所以%2s的打印结果还是hello
print("string=%2s" % string)  # output: string=hello

# %7s意思是字符串长度为7,当原字符串的长度小于7时,在原字符串左侧补空格,
# 所以%7s的打印结果是  hello
print("string=%7s" % string)  # output: string=  hello

# %-7s意思是字符串长度为7,当原字符串的长度小于7时,在原字符串右侧补空格,
# 所以%-7s的打印结果是  hello
print("string=%-7s!" % string)  # output: string=hello  !

# %.2s意思是截取字符串的前2个字符,所以%.2s的打印结果是he
print("string=%.2s" % string)  # output: string=he

# %.7s意思是截取字符串的前7个字符,当原字符串长度小于7时,即是字符串本身,
# 所以%.7s的打印结果是hello
print("string=%.7s" % string)  # output: string=hello

# %a.bs这种格式是上面两种格式的综合,首先根据小数点后面的数b截取字符串,
# 当截取的字符串长度小于a时,还需要在其左侧补空格
print("string=%7.2s" % string)  # output: string=     he
print("string=%2.7s" % string)  # output: string=hello
print("string=%10.7s" % string)  # output: string=     hello

# 还可以用%*.*s来表示精度,两个*的值分别在后面小括号的前两位数值指定
print("string=%*.*s" % (7, 2, string))  # output: string=     he
复制代码

 

二、%d

复制代码
num = 14

# %d打印时结果是14
print("num=%d" % num)  # output: num=14

# %1d意思是打印结果为1位整数,当整数的位数超过1位时,按整数原值打印,所以%1d的打印结果还是14
print("num=%1d" % num)  # output: num=14

# %3d意思是打印结果为3位整数,当整数的位数不够3位时,在整数左侧补空格,所以%3d的打印结果是 14
print("num=%3d" % num)  # output: num= 14

# %-3d意思是打印结果为3位整数,当整数的位数不够3位时,在整数右侧补空格,所以%3d的打印结果是14_ (_代表空格,方便展示给你们看)
print("num=%-3d" % num)  # output: num=14_

# %05d意思是打印结果为5位整数,当整数的位数不够5位时,在整数左侧补0,所以%05d的打印结果是00014
print("num=%05d" % num)  # output: num=00014

# %.3d小数点后面的3意思是打印结果为3位整数,
# 当整数的位数不够3位时,在整数左侧补0,所以%.3d的打印结果是014
print("num=%.3d" % num)  # output: num=014

# %.0003d小数点后面的0003和3一样,都表示3,意思是打印结果为3位整数,
# 当整数的位数不够3位时,在整数左侧补0,所以%.3d的打印结果还是014
print("num=%.0003d" % num)  # output: num=014

# %5.3d是两种补齐方式的综合,当整数的位数不够3时,先在左侧补0,还是不够5位时,再在左侧补空格,
# 规则就是补0优先,最终的长度选数值较大的那个,所以%5.3d的打印结果还是  014
print("num=%5.3d" % num)  # output: num=  014

# %05.3d是两种补齐方式的综合,当整数的位数不够3时,先在左侧补0,还是不够5位时,
# 由于是05,再在左侧补0,最终的长度选数值较大的那个,所以%05.3d的打印结果还是00014
print("num=%05.3d" % num)  # output: num=00014

# 还可以用%*.*d来表示精度,两个*的值分别在后面小括号的前两位数值指定
print("num=%*.*d" % (4, 3, num))  # output: num= 014
复制代码

 

三、%f

复制代码
import math

# %a.bf,a表示浮点数的打印长度,b表示浮点数小数点后面的精度

# 只是%f时表示原值,默认是小数点后5位数
print("PI=%f" % math.pi)  # output: PI=3.141593

# 只是%9f时,表示打印长度9位数,小数点也占一位,不够左侧补空格
print("PI=%9f" % math.pi)  # output: PI=_3.141593

# 只有.没有后面的数字时,表示去掉小数输出整数,03表示不够3位数左侧补0
print("PI=%03.f" % math.pi)  # output: PI=003

# %6.3f表示小数点后面精确到3位,总长度6位数,包括小数点,不够左侧补空格
print("PI=%6.3f" % math.pi)  # output: PI=_3.142

# %-6.3f表示小数点后面精确到3位,总长度6位数,包括小数点,不够右侧补空格
print("PI=%-6.3f" % math.pi)  # output: PI=3.142_

# %.2f表示小数点后面精确到2位,整数部分是原值
print("PI=%.2f" % math.pi)  # output: PI=3.14

# 还可以用%*.*f来表示精度,两个*的值分别在后面小括号的前两位数值指定
print("PI=%*.*f" % (6, 3, math.pi))  # output: PI=_3.142
复制代码

 

四、format

复制代码
# 三种方式:
# 第一种:按顺序接收参数
s1 = '我叫{},今年{},性别{}'.format('帅哥','18','')
print(s1)   # 我叫帅哥,今年18,性别男


# 第二种:按索引接收参数
s2 = '我叫{0},今年{1},性别{2},我依然叫{0}'.format('帅哥', '18', '')
print(s2)  # 我叫帅哥,今年18,性别男,我依然叫帅哥


# 第三种:按关键字接收参数
s3 = '我叫{name},今年{age},性别{sex}'.format(age='18', name='帅哥', sex='')
print(s3)  # 我叫帅哥,今年18,性别男
复制代码

 

三、f-string

复制代码
1、介绍
f-string(formatted string literals):格式化字符串常量,是Python3.6新引入的一种字符串格式化方法,使格式化字符串的操作更加简便。


2、语法
f'xxx' 或 F'xxx'  且以大括号 {} 表明被替换的字段,{}里面可以是字符串或者表达式


3、简单替换字符串:{'字符串'}
name = '小白'
msg = f'我叫{name},今年{18}岁,性别{"男"}'
print(msg)  # 我叫小白,今年18岁,性别男
注意:若f使用的是单引号,那么里面的{}若是字符串则应该用双引号,反之一样


4、计算表达式:{表达式}
ret = f"1 add 2 is {1+2}"
print(ret)  # 1 add 2 is 3


5、lambda表达式:{(lambda表达式) (参数)}
注意:
lambda表达式的 : 会被f-string误认为是表达式与格式描述符之间的分隔符,
为避免歧义,需要将lambda表达式置于括号 () 内:

func = f"my_add result:{(lambda x,y:x+y) (1,2)}"
print(func)  # my_add result:3

若不加括号则报错:
func = f"my_add result:{lambda x,y:x+y (1,2)}"
print(func)


  File "<fstring>", line 1
    (lambda x,y)
               ^
SyntaxError: unexpected EOF while parsing


6、f-string用法很强大,这里只是写出了一些常用的方法,感兴趣可以自己去研究其他用法
复制代码

 

五、类型注解

复制代码
Python是一门动态语言,变量以及函数的参数是不区分类型。比如我们要实现一个数字相加的函数:
def my_add(x, y):
  return x + y
但是这样的坏处是,别人不知道你要做的是数字相加的函数,别人输入字符串,一样是可以得到字符串的拼接的


于是 Python 3 提供了一个新的特性:
类型注解:
def my_add(x:int, y:int) -> int:
  return x + y

语法:
参数:类型   指定函数的参数类型
-> 类型    指定函数的返回值类型。


注意:Python 解释器并不会因为这些注解而提供额外的校验,
也就是说,这些类型注解加不加,对你的代码来说没有任何影响,我一样可以输入字符串的。

只是这么做的好处是:
1.让别人看得更明白
2.当你输入str和float 类型的参数时,虽然一样不会报错可以得出结果,但是IDE工具会有高亮提示
 
复制代码

 

posted @   我用python写Bug  阅读(1764)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示