zl程序教程

您现在的位置是:首页 >  Python

当前栏目

Python字符串格式化_占位符_变量转换_Python自学第十八节

2023-02-18 16:43:01 时间

将其他类型的数据转化为字符串,或在字符串中引入一些变量,就要用到字符串格式化。如下采用 "+" 可以进行字符串拼接,但如果引用的变量数目比较多,就会非常复杂。

>>> a = 'zhangsan'
>>> b = '100'
>>> s = 'Hello ' + a + ",your score is " + b
>>> s
'Hello zhangsan,your score is 100'

以下三种方法将可以更方便的将变量带入到某个变量

%占位符:

字符串格式化:要在引用变量的位置使用一个占位符来代替,最后在字符串的后面再按顺序指定这些变量的名称。

  • %s表示字符型变量;
  • %d表示数值型变量;
  • %f代表浮点型变量;%.nf表示小数位数(n为几即保留几位小数)
>>> a = 'lisi'
>>> b = 80
>>> s = 'Hello %s ,Your score is %d' %(a,b)  #注意最后引用变量的按顺序输入
>>> s
'Hello lisi ,Your score is 80
>>> b = 88.88   #假设成绩为浮点型(就是包含小数),那么在f之前可以使用.n方式进行保留位数
>>> s = 'Hello %s ,Your score is %.1f' %(a,b)   #保留1位小数即为%.1f,并四舍五入
>>> s
'Hello lisi ,Your score is 88.9'
>>> s = 'Hello %s ,Your score is %.2f' %(a,b)    #保留2位小数即为%.2f,并四舍五入
>>> s
'Hello lisi ,Your score is 88.88'

%d占位符的其它用法:

输出格式为“2022-06-29”的日期,其中年月日都是用变量表示: %2d指定输出宽度为2,默认为空格填充。 %02d 代表用0来填充空位。

>>> year = 2022
>>> month = 6
>>> day = 29
>>> a = '%d-%2d-%2d'%(year,month,day)   # %2d指定输出宽度为2,默认为空格填充
>>> a
'2022- 6-29'
>>> a = '%d-%02d-%d' %(year,month,day)   # %02d 代表用0来填充
>>> a
'2022-06-29'

format()方法:

%占位符的方式要刻意区分变量类型,format()方法则无需考虑变量类型,可以用来取代%占位符,但是一定要注意顺序。

>>> name = 'wangwu'
>>> age = 40
>>> 'Hello {0}, Your age is {1}'.format(name,age)  #{0}{1}要引用变量的编号。format按顺序指定变量
'Hello wangwu, Your age is 40'

利用format()方法指定小数位数。

>>> 'Your score is {0:.1f}'.format(83.129)
'Your score is 83.1'
>>> 'Your score is {0:.2f}'.format(83.129)
'Your score is 83.13'
{0:.1f} 0代表要引用的变量编号,: 用来指定特殊用法,.1f 用来表示是浮点型变量保留小数点后一位。保留2位小数就是.2f。

利用format()方法格式化百分数

>>> 'Your score is {0:0.1%}'.format(0.8796)   #四舍五入到小数点后1位
'Your score is 88.0%'
>>> 'Your score is {0:0.2%}'.format(0.8796)    #四舍五入到小数点后2位
'Your score is 87.96%'

% 代表数值先乘以 100 ,0.2 保留2位小数,然后得到n%

利用format()方法实现等宽输出

>>> year = 2022
>>> month = 6
>>> day = 29
>>> '{0}-{1:02d}-{2}'.format(year,month,day)  
'2022-06-29'

{1:02d}与%占位符类似,1 代表变量编号, : 代表使用特殊用法,0 代表用0替代1个宽度,2 表示2个宽度, d 表示数值型。


f_string 方法

字符串的前面加上 f 前缀,并将变量名用花括号括起来,pytho就可以自动识别并引用变量。

>>> f'{year}-{month}-{day} '   #直接加f前缀引用变量
'2022-6-29 '
>>> f'{year}-{month:02d}-{day} '   #0代表用0替代1个宽度,2表示2个宽度, d表示数值型。
'2022-06-29 '
>>> b = 3.1415926
>>> f'{b:.1f}'   #: 用来指定特殊用法,.1f 用来表示是浮点型变量保留小数点后一位
'3.1'

特殊用法与format特殊用法一致,:02d表示2个宽度,空用0替代。:.1f表示浮点型数值保留小数点后1位。


练习:

输出IP地址表 192.168.1~10

方法一:
>>> for i in range(1,11):
...      print(f'192.168.1.{i}')
方法二:
>>> for i in range(1,11):
...      print('192.168.1.{0}'.format(i))
... 
方法三:
>>> for i in range(1,11):
...      print('192.168.1.%d' %i)
... 

九九乘法表优化代码:

#!/usr/bin/python3
for i in range(1,10):   #外循环共循环九次
   for j in range(1,i+1):   #内循环控制每行输出的个数,开始是1 结束是i+n
      n = i*j
      print(f"{j}*{i}={n}",end=' ')   
   print()