4.4、输入、输出
4.4.1、输入:输入语句可以再程序运行时从输入设备获得数据。标准输入设备就是键盘。通过input()函数可以获得键盘输入的数据。一般格式为
>>> x = input('请输入数字:')
input()函数首先会输出提示的字符串,然后等待用户键盘输入,直到用户按回车键结束,函数最后返回用户输入的字符串(不包括最后的回车符),系统继续执行input()函数后面的语句。其中 输入的内容会保存在 x 里面。如果想转换输入内容的类型,则使用相对应的函数即可。
4.4.2、输出:输出语句可以将程序的运行结果显示在输出设备上,供用户查看。标准的输出设备就是显示器屏幕。一般格式如下:
>>> print(<输出值 1>[,<输出值项 2>,... , <输出值项 n>,sep=', ',end=' '])
通过print()函数将多个输出值转换为字符串并且输出,这些值之间以sep分隔,最后以end结束。sep默认为空格,end默认为换行。
>>> print('abc',123,sep=',',end=',')
abc,123,
Python 的 print()函数中还可以使用字符串格式化控制输出。字符串的格式化形式: formart_string % obj,把对象objc按格式要求转换为字符串。
常见的格式字符如下:
格式字符
含义
实例
%s
输出字符串
'Grandies%s'%'A-'返回 'GrandiesA-'
%d
输出整数
'Scoreis%d'%80返回'Scoreis80'
%c
输出字符chr(num)
'%c'%65 返回 'A'
%[width][.precision]f
输出浮点数,长度为with,小数点后precision位。with 默认为0,precision 默认为 6
'%f'%1.23456 返回 '1.234560', '%.4f'%1.23456返回'1.2346','%7.3f'%1.23456 返回 ' 1.235','%4.3f'%1.23456 返回 '1.235'
%o
以无符号的八进制数格式输出
'%o'%10 返回 '12'
%x 或 %X
以无符号的十六进制数格式输出
'%o'%10 返回 'a'
%e 或 %E
以科学计算法格式输出
'%e'%10 返回 '1.000000e+01'
>>> print("我的名字是%s" % "张三")
我的名字是张三 # 即 %s 的位置使用"张三"代替
如果需要需要在字符串中通过格式化字符输出多个值,则每个对应值存在一对圆括号()中,值与值之间使用英文逗号隔开。例如:
>>> print("%s 的年龄是 %d" % ("张三",20))
下面是一些格式化辅助命令
符号
作用
m
定义输出的宽度,如果变量值的输出宽度超过 m,则按实际宽度输出
-
在指定的宽度内输出值左对齐(默认为右对齐)
+
在输出的正数面前显示 "+”(默认不输出"+”)
#
在输出的八进制数前面加 '0o',在输出的十六进制前面加'0x'或'oX'
0
在指定的宽度内输出值时,左边的空格位置 以 0 填充
.n
对于浮点数,指输出时小数点后保留的位数(四舍五入);对于字符串,指输出字符串的前n位
格式化输出例子:
>>> test = 5000
>>> print("%6d" % test) # 输出宽度为6,前面有两个空格,右对齐
5000
>>> print("%2d" % test) # 输出宽度为2,但test 值宽度为4,按实际输出
5000
>>> print("%-6d" % test) # 输出宽度为6,后面两个空格,左对齐
5000
>>> print("%+6d" % test) # 输出宽度为6,前面加一个空格,右对齐
+5000
>>> print("%06d" % test) # 输出宽度为6,前面加两个 0 ,空格改为0
005000
>>> print("%#od" % test) # 以八进制数形式输出,前面添加 '0o'
0o11610d
>>> print("%#xd" % test) # 以十六进制数形式输出,前面添加 '0x'
0x1388d
m.n 格式常用于浮点数格式,科学计数法格式以及字符串格式的输出。对于前两种格式而言,%m.nf、%m.nX指输出的总宽度为m(可以省略),小数点后面保留n位(四舍五入)。如果变量值的总宽度超出m,则按照实际输出。%m.ns 指输出字符串的宽度为m,输出前 n 个字符,前面补 m-n个空格。例如:
>>> test=128.3656
>>> print("%6.2f" % test) # 输出实际宽度为6,小数点后面保留2位
128.37
>>> print("%3.1f" % test) # 则按照实际宽度输出,小数点后面保留 1 位
128.4
>>> print("%.3ef" % test) # 小数点后面保留 3 位
1.284e+02f
>>> test = "北京很漂亮"
print("%5.2s" % test) # 输出的宽度为5,输出前两个字,前面有5-2=3个空格
北京
Python 3 还支持用格式化字符串的函数str.format()进行字符串格式化。该函数在形式上相当于通过{}来代替%,但功能更强大。例如:
>>> "{0}的年龄是{1}" .format ("张三",20)
'张三的年龄是20'
format函数还可以用接收参数的方式对字符串进行格式化,参数位置可以不按顺序,参数也可以不用或者用多次。例如
>>> "{}的年龄是{}" .format ("张三",20)
'张三的年龄是20'
>>> "{name}的年龄是{age}" .format (age=20,name="张三")
'张三的年龄是20'
>>> "{0}的年龄是{1}" .format ("张三",20)
'张三的年龄是20'