《Python 3.x入门到应用实践》 — 2.4 格式化输入输出功能

举报
华章计算机 发表于 2020/02/08 22:50:17 2020/02/08
【摘要】 本节书摘来自华章计算机《Python 3.x入门到应用实践》 一书中第2章,第2.4.1节,作者是赵 军 等。

 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

image.png

格式化输出可以用来控制打印输出的位置,让输出的数据能整齐排列,例如:

print("%5s的数学成绩:%5.2f" % ("Jenny",95))

print("%5s的数学成绩:%5.2f" % ("andy",80.2))

范例程序的输出结果如图2-5所示。

 image.png

图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所示。

 image.png

图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所示。

 image.png

图2-7

其中,{1:_^10}表示输出的字段宽度为10,以下画线“_”填充并居中;{1:>10}表示输出的字段宽度为10且靠右对齐,未指定填充字符就会以空格填充;{1:*<10}表示输出的字段宽度为10,以星号“*”填充并靠左对齐。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。