一、 简述
“格式化字符串(format string)” - 每一次你使用 ' ’ 或 " " 把一些文本引用起来,你就建立了一个字符串。 字符串是程序将信息展示给人的方式。
二、 代码
1 #!usr/bin/env python
2 # -*- coding:utf-8 -*-
3
4 # Author: xixihuang
5 # Date : 2016/08/31 09:52 AM
6 # Desc : 习题5:更多的变量与打印
7 # 键入更多的变量并且将它们打印出来。这次将使用一个叫“格式化字符串(format string)”的东西。
8 # 每一次使用“把一些文本引用起来,你就建立了一个字符串。字符串是程序将信息展示给人的方式。
9
10 #
11 #
12 #
13
14 my_name = 'Zed A. Shaw'
15 my_age = 35 # not a lie
16 my_height = 74 # inches
17 my_weight = 180 # lbs
18 my_eyes = 'Blue'
19 my_teeth = 'White'
20 my_hair = 'Brown'
21
22 print "Let's talk about %s." % my_name
23 print "He's %d inches tall." % my_height
24 print "He's %d pounds heavy." % my_weight
25 print "Actually that's not too heavy."
26 print "He's got %s eyes and %s hair." % (my_eyes, my_hair)
27 print "His teeth are usually %s depending on the coffee." % my_teeth
28
29 # this line is tricky, try to get it exactly right
30 print "If I add %d, %d, and %d I get %d." % (
31 my_age, my_height, my_weight, my_age + my_height + my_weight)
三、 输出结果
$ python ex5.py
Let's talk about Zed A. Shaw.
He's 74 inches tall.
He's 180 pounds heavy.
Actually that's not too heavy.
He's got Blue eyes and Brown hair.
His teeth are usually White depending on the coffee.
If I add 35, 74, and 180 I get 289.
$
四、 加分习题
1. 修改所有的变量名字,把它们前面的``my_``去掉。确认将每一个地方的都改掉,不只是你使用``=``赋值过的地方。
全部替换快捷键: Ctrl + R
2. 试着使用更多的格式化字符。例如 %r 就是是非常有用的一个,它的含义是“不管什么都打印出来”。
格式化字符 描述
%d 有符号整数(十进制) ;
%s 调用 str函数打印字符串,str函数返回原始字符串;
%r 调用 rper函数打印字符串,repr函数返回的字符串是加上了转义序列,是直接书写的字符串的形式;
3. 在网上搜索所有的 Python 格式化字符。
字符串格式化操作符(%)只适用于字符串类型,非常类似于C 语言里面的printf()函数的字符串格式化,甚至所用的符号都一样,都用百分号(%),并且支持所有printf()式的格式化操作。
语法如下:
format_string % string_to_convert
其中:format_string为格式标记字符串,形式为“%cdoe”;string_to_convert 为要格式化的字符串,如果是两个以上,则需要用小括号括起来。
Python 字符串格式化符号:
格式 描述
%%百分号标记 #就是输出一个%
%c字符及其ASCII码
%s字符串
%d有符号整数(十进制)
%u无符号整数(十进制)
%o无符号整数(八进制)
%x无符号整数(十六进制)
%X无符号整数(十六进制大写字符)
%e浮点数字(科学计数法)
%E浮点数字(科学计数法,用E代替e)
%f浮点数字(用小数点符号)
%g浮点数字(根据值的大小采用%e或%f)
%G浮点数字(类似于%g)
%p指针(用十六进制打印值的内存地址)
%n存储输出字符的数量放进参数列表的下一个变量中
%格式化符也可用于字典,可用%(name)引用字典中的元素进行格式化输出。
负号指时数字应该是左对齐的,“0”告诉Python用前导0填充数字,正号指时数字总是显示它的正负(+,-)符号,即使数字是正数也不例外。
可指定最小的字段宽度,如:"%5d" % 2。也可用句点符指定附加的精度,如:"%.3d" % 3。
e.g.
# 例:数字格式化
nYear = 2018
nMonth = 8
nDay = 18
# 格式化日期 %02d数字转成两位整型缺位填0
print '%04d-%02d-%02d'%(nYear,nMonth,nDay)
>> 2018-08-18# 输出结果
fValue = 8.123
print '%06.2f'%fValue# 保留宽度为6的2位小数浮点型
>> 008.12# 输出
print '%d'%10# 输出十进制
>> 10
print '%o'%10# 输出八进制
>> 12
print '%02x'%10# 输出两位十六进制,字母小写空缺补零
>> 0a
print '%04X'%10# 输出四位十六进制,字母大写空缺补零
>> 000A
print '%.2e'%1.2888# 以科学计数法输出浮点型保留2位小数
>> 1.29e+00
格式化操作符辅助指令
符号 作用
* 定义宽度或者小数点精度
- 用做左对齐
+ 在正数前面显示加号( + )
<sp> 在正数前面显示空格
# 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于
用的是'x'还是'X')
0 显示的数字前面填充‘0’而不是默认的空格
% '%%'输出一个单一的'%'
(var) 映射变量(字典参数)
m.n m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)
4. 试着使用变量将英寸和磅转换成厘米和千克。不要直接键入答案。使用 Python 的计算功能来完成。
使用 Python 的计算功能来完成。
1英寸(in)=2.54厘米(cm)
1磅(lb)=0.45359237千克(kg)
1 my_height = 74 # inches
2 transfer_height = 2.54 * my_height # cm
3
4 my_weight = 180 # lbs
5 transfer_weight = 0.45359237 * my_weight # kg
6
7 print "He's %d innchess tall, %d cm." % (my_height, transfer_height)
8 print "He's %d pounds heavy, %d kg." % (my_weight, transfer_weight)
五、 补充