《笨办法学 python3》系列练习计划——5. 格式化字符串

题目

通过练习了解和掌握格式化字符串的使用。
之前的练习中使用了 print() 打印出的字符串内容是固定的,而格式化字符串可以将变量插入到字符串中打印出来,随着变量的改变打印出的内容也在改变。

加分练习

  1. 去掉所有变量名前面的 my_
  2. 试着使用更多的格式化字符。例如 %r 它的含义是“不管什么都打印出来”。
  3. 搜索 python 所有的格式化字符。
  4. 使用 python 的计算功能,将变量从英寸和磅转化为厘米和千克。




我的答案

5.0. 基础练习

my_name = 'Zed A. Shaw'
my_age = 35
my_height = 74 # 英寸
my_weight = 180 # 磅
my_eyes = 'Blue'
my_teeth = 'White'
my_hair = 'Brown'

print("let's talk about %s." % my_name)
print("He's %d inches tall." % my_height)
print("He's %d pounds heavy." % my_weight)
print("Actually that's not too heavy.")
print("He's got %s eyes and %s hair." % (my_eyes, my_hair))
print("His teeth are usually %s depending on the coffee." % my_teeth)
# 下面这行复杂一点
print("If i add %d, %d, and %d I get %d." % (
    my_age, my_height, my_weight, my_age + my_height + my_weight
))

这里写图片描述

5.1. 去掉 my_

预期去掉之后没变化
这里写图片描述

5.2. 使用 %r 格式化字符

# 试用 %r 格式化字符
print("这里尝试使用新的格式化字符占位符,看看效果: %r" % "放个字符串")
print("在试试放个数字:%r" % 666)
print("这次是数字字符串:%r" % '2333')

这里写图片描述
%r 容易和 %s 混淆,其主要区别在于 %r 把原始的信息显示了出来,如字符串保留了引号。由于这个特性有人会使用 %r 进行 debug 调试

5.3. python 的格式化字符串

python 常用的格式化字符及其效果

占位符 作用 示例 结果
%s 格式化为字符串 ‘%s’ % -666.66 ‘-666’
%r 格式化为原始数据 ‘%r’ % ’ abc ‘ ” ‘abc’ “
%d 格式化为 10 进制整数 ‘%d’ % 666 ‘666’
%c 整数:将数字转换成其unicode对应的值,10进制范围为
0 <= i <= 1114111(py27则只支持0-255);
字符:将字符添加到指定位置
‘%c %c’ % (97, ‘b’) ‘a b’
%u 将被废除的方法,等于 %d
%o 格式化为 8 进制整数 ‘%o’ % 8 ‘10’
%x 格式化为 16 进制整数 ‘%x’ % 16 ‘10’
%X 16 进制大写 ‘%X’ % 15 ‘F’
%f 10进制浮点数;
可以用m.n控制最小长度(m)和最小小数位(n)
‘%f;%6.2f’ % (15,10) ‘15.000000; 10.00’
‘10.00’的前面有个空格占位共6位
%e 使用科学计数法表示浮点数 ‘%e’ % 0.00001 ‘1.000000e-05’
%E 同 %e e为大写 ‘%.2E’ % 0.0004 ‘4.00E-04’
%g / %G 以 10 进制或科学计数法表示浮点数 / (大写) ‘%g’ % 1.001
‘%g’ % 0.00004
‘1.001’
‘4e-05

python 格式化字符辅助符号

辅助符号 作用 示例 结果
* 定义宽度或者小数点精度 ‘%*s; %.*f’ % (2, ‘a’, 2, 4)
’ a; 4.00’
设置了2位字符串,因此有一个空格占位
- 用做左对齐 ‘%-2s左对齐空格在右边’ % ‘a’ ‘a 左对齐占位空格在右边’
+ 在正数前显示+号 ‘%+d, %+d, %+o, %+x’ %(-2, 3, 9, 20) ‘-2, +3, +11, +14’
# 在 8 进制前显示 0o
在 16 进制前显示 0x0X
‘%#o, %#x, %#X’ % (9, 16, 17) ‘0o11, 0x10, 0X11’
0 数字前填充0而非空格 ‘%05d’ % 5 ‘00005’
(var) 映射变量(通常用来处理字段类型的参数) who = {‘name’:’哈哈餐馆’, ‘age’:17}

‘%(name)s is %(age)d years old’ % who
‘哈哈餐馆 is 17 years old’
m.n m 是显示的最小总宽度,
n 是小数点后的位数
‘%4.1f’ % 5 ’ 5.0’

5.4. 单位换算

# 单位换算
print("Zed A. Shaw 高 %.2f 厘米" % (height * 2.54))
print("Zed A. Shaw 重 %.2f 千克" % (weight * 0.45))

这里写图片描述




返回目录

《笨办法学 python3》系列练习计划——目录

发布了56 篇原创文章 · 获赞 138 · 访问量 24万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章