购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4 格式化输入输出功能

学习Python的初期,通常是从控制面板输出程序的执行结果,或者从控制台获取用户输入的数据。前面我们经常使用print()函数输出程序的执行结果,本节就来看一下如何调用print()函数进行格式化输出,以及如何调用input()函数输入数据。

2.4.1 格式化输出

print()函数支持格式化输出,有两种格式化方法可以使用,一种是以“%”的方式格式化输出,另一种是通过format函数格式化输出。

1.“%”格式化输出

格式化文本可以用“%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()将十进制数转换成二进制字符再输出。

2.format()函数输出

格式化输出也可以搭配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,以星号“*”填充并靠左对齐。

2.4.2 输入函数:input()

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行:按序输出姓名、语文和数学的表头,再于下一行输出姓名和两科的成绩。 6cKS7rz9zwYtEnjNK3jhrcwI1a8/I2RHJPuXkLtzM22cqmjiN7koYiVqQq9hK88f

点击中间区域
呼出菜单
上一章
目录
下一章
×