主要介绍下各种数据类型中的常见格式输出。
1)我们先看看整数中的问题,那就是不同进制的格式化显示。比如对于十进制整数,能否以其他进制来显示?
我们先看利用print函数的格式化功能:
num = 100
print('%x' % num)
输出为: 64。这里的%字符表示标记转换说明符,%x表示以16进制显示数值,这是老版本Python的写法。我们可以使用功能更为强大的一个新的写法。
num = 100
print(format(num, 'b'))
print(format(num, 'o'))
print(format(num, 'x'))
print(format(num, 'd'))
输出为:
1100100
144
64
100
这说明利用format函数来实现格式转换,而且也可以转换为其他进制,这些都是通过format第二个参数来区分,比如b、o、x、d分别表示二进制、八进制、十六进制和十进制。
format也可以把其他进制转化为十进制:
num = 0b100
print(format(num, 'd'))
输出为:4。
也可以使用一些特殊的函数来完成向其他特定进制的转换,比如十进制向其他进制的转换:
num = 100
print(bin(num))
print(oct(num))
print(hex(num))
输出为:
0b1100100
0o144
0x64
但是没有现成的函数可以向十进制函数,因此可以巧妙的使用组合来实现:
num = 0b100
print(int(str(num), 10))
输出为:4。
2)我们再看看浮点数的问题,主要介绍下科学计数法的格式转换。
比如小数转换为科学计数法:
num = 1 / 3
print('{:.4e}'.format(num))
输出为:
3.3333e-01
其中4可以酌情替换,这里的4表示4为小数位。整个{:.4e}就是一种科学计数法的输出格式。也可以写成效果一样的另外老版本的写法形式:
num = 1 / 3
print('%.4e' % num)
输出内容同上。
反过来,科学计数法也可以转换为正常小数形式:
num = 3.3333e-01
print('{:.3f}'.format(num))
输出为:
0.333
请注意格式中的e换成了f的区别。
也可以使用老版本写法:
num = 3.3333e-01
print('%.3f' % num)
输出内容同上。
3)最后来看看字符串的格式化输出。
字符串的格式化输出内容最多样,实用性也最大。我们通过几个例子来说明。我们先看看格式化变量值的输出。这是最原始的方法,直接使用加号连接字符串形成所需要的输出格式和内容:
strs = '南京'
print('变量的值是' + strs)
输出为:变量的值是南京
也可以使用format格式来进行:
strs = '南京'
print('变量的值是{}'.format(strs))
输出内容同上。print函数中参数的花括号{}表示占位符,可以理解为一个空,等待format函数的参数变量的值来填充。而且即使是其他数据类型也可以:
num = 1
print('变量的值是{}'.format(num))
输出为:
变量的值是1
显然如果是+写法,还需要转换数据类型,因此这个写法更为简单。
对于多个变量,依然方便:
strs1 = '南京'
strs2 = '江苏'
print('{}是{}省会'.format(strs1, strs2))
输出为:
南京是江苏省会
也可以这样写:
strs1 = '南京'
strs2 = '江苏'
print(f'{strs1}是{strs2}省会')
输出内容同上,f前缀表示所有花括号中的就是要输出的对应变量。
也可以使用%形式的占位符实现同样的效果,如%s表示字符串:
strs1 = '南京'
strs2 = '江苏'
print('%s是%s省会' % (strs1, strs2))
输出内容同上。后面一些练习我们还会用到一些format函数其他的格式用法,届时我们会边学边用。
配套学习资源、慕课视频: