![]() |
2.4 格式化输入输出功能 |
学习Python的初期,通常是从控制面板输出程序的执行结果,或者从控制台获取用户输入的数据。前面我们经常使用print()函数输出程序的执行结果,本节就来看一下如何调用print()函数进行格式化输出,以及如何调用input()函数输入数据。
print()函数支持格式化输出,有两种格式化方法可以使用,一种是以“%”的方式格式化输出,另一种是通过format函数格式化输出。
格式化文本可以用“%s”代表字符串、“%d”代表整数、“%f”代表浮点数,语法如下:
print(格式化文本 % (参数1,参数2,…,参数n))
例如:
score = 66 print("大明的数学成绩:%d" % score)
输出结果:
大明的数学成绩:66
其中%d就是格式化的格式,代表输出整数格式。各种输出格式可参考表2-4。
表2-4
格式化输出可以用来控制打印输出的位置,让输出的数据能整齐排列,例如:
print("%5s的数学成绩:%5.2f" % ("Jenny",95)) print("%5s的数学成绩:%5.2f" % ("andy",80.2))
范例程序的输出结果如图2-5所示。
图2-5
上述范例中格式化文本有两个参数,所以参数必须用括号括住,其中%5s表示输出时占用5个字符的位置,当实际输出少于5个字符时,会在字符串左边补上空格符;%5.2f表示输出5位数的浮点数,小数点占2位数。
以下范例程序将数字100分别用print函数按浮点数、八进制数、十六进制数以及二进制数的格式输出,大家可以用这个范例程序练习一下。
[范例程序:print_%.py]整数按不同进制数输出
01 num = 100 02 print ("数字 %s 的浮点数:%5.1f" % (num,num)) 03 print ("数字 %s 的八进制:%o" % (num,num)) 04 print ("数字 %s 的十六进制:%x" % (num,num)) 05 print ("数字 %s 的二进制:%s" % (num,bin(num)))
程序的执行结果如图2-6所示。
图2-6
程序代码解析:
·第02~04行:按浮点数八进制数、十六进制数的格式输出。
·第05行:由于二进制数并没有格式化符号,因此可以通过内建的函数bin()将十进制数转换成二进制字符再输出。
格式化输出也可以搭配format()函数,相对于%格式化的方式,format()函数更加灵活,用法如下:
print("{}是个用功的学生. ".format("王小明"))
一般简单的format用法会用大括号“{}”,表示在{}内要用format()中的参数替换。format()函数相当具有弹性,它有两大优点:
·不需要理会参数数据类型,一律用{}表示。
·可使用多个参数,同一个参数可以多次输出,位置可以不同。
举例来说:
print("{0} 今年 {1} 岁. ".format("王小明", 18))
其中,{0}表示使用第一个参数,{1}表示使用第二个参数,以此类推,如果{}内省略数字编号,就会按照顺序依次填入。
我们也可以使用参数名称来取代对应的参数,例如:
print("{name} 今年 {age} 岁. ".format(name="王小明", age=18))
直接在数字编号后面加上冒号“:”可以指定参数的输出格式,例如:
print('{0:.2f}'.format(5.5625))
表示第一个参数取小数点后2位。
另外,也可以搭配“^”“<”“>”符号加上字段宽度来让字符串居中、左对齐或右对齐,例如:
print("{0:10}成绩:{1:_^10}".format("Jennifer", 95)) print("{0:10}成绩:{1:>10}".format("Brian", 87)) print("{0:10}成绩:{1:*<10}".format("Jolin", 100))
程序的输出结果如图2-7所示。
图2-7
其中,{1:_^10}表示输出的字段宽度为10,以下画线“_”填充并居中;{1:>10}表示输出的字段宽度为10且靠右对齐,未指定填充字符就会以空格填充;{1:*<10}表示输出的字段宽度为10,以星号“*”填充并靠左对齐。
input是常用的输入指令,可以让用户从“标准输入设备”(通常指键盘)输入数据,把用户所输入的数值、字符或字符串传送给指定的变量。例如,计算每位学生的语文和数学的总分,就可以通过input指令来让用户输入语文和数学的成绩,再计算总分。语法如下:
变量 = input(提示字符串)
当输入数据并按Enter键后,就会将输入的数据赋值给变量。上述语法中的“提示字符串”是一段告知用户输入的提示信息,例如希望用户输入身高,程序而后输出身高的值,程序代码如下:
height =input("请输入你的身高:") print (height)
又例如:
score = input("请输入数学成绩:") print("%s的数学成绩:%5.2f" % ("Jenny",float(score)))
程序的输出结果如图2-8所示。
图2-8
当程序执行时,遇到input指令会先等待用户输入数据,在用户输入完成并按Enter键之后,就会将用户输入的数据存入变量score中。
用户输入的数据是字符串格式,我们可以通过内建的int()、float()、bool()等函数将输入的字符串转换为整数、浮点数、布尔值类型,范例中指定的格式是浮点数(%5.2f),所以调用float()函数将输入的score值转换为浮点数。下一节将介绍更完整的数据类型转换。
如果我们使用Spyder这类集成开发环境,那么在程序执行到输入提示信息时,别忘了将输入光标切换到Python控制台再输入。
下面通过范例程序再次练习输入与输出的用法。
【范例程序:format.py】format格式化输出
01 name = input("请输入姓名:") 02 che_grade = input("请输入语文成绩:") 03 math_grade = input("请输入数学成绩:") 04 05 print("{0:10}{1:>6}{2:>5}".format("姓名","语文","数学")) 06 print("{0:<10}{1:>5}{2:>7}".format(name,che_grade,math_grade))
程序的执行结果如图2-9所示。
图2-9
程序代码解析:
·第01~03行:按序要求用户输入姓名、语文成绩和数学成绩。
·第05、06行:按序输出姓名、语文和数学的表头,再于下一行输出姓名和两科的成绩。