首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

Python学习入门基础教程(learning Python)-1.2.2 Python格式化输出基础

2013-10-08 
Python学习入门基础教程(learning Python)--1.2.2 Python格式化输出基础? ? ? 本节讨论为何要格式化输出数

Python学习入门基础教程(learning Python)--1.2.2 Python格式化输出基础
? ? ? 本节讨论为何要格式化输出数据?? ? ? 先看一段代码吧,本程序的功能是计算月支付金额。 ? ?[python]?view plaincopy

  1. amount_due?=?5000.0    ??
  2. monthly_payment?=?amount_due?/?12.0??
  3. print('The?monthly?payment?is',?monthly_payment)??

? ? ?输出结果

[python]?view plaincopy
  1. The?monthly?payment?is?416.666666667??

? ? ?从上边结果可以看出“416.666666667”这个数据很不人性!希望输出结果保留两位小数最好了!怎么办?

? ? ?Python的内建函数print函数能够将字符串、整数、浮点数等数据结构值输出,但是有的时候输出结果会比较杂乱,格式不好,这时候需要用到Python的另一个内建函数format来格式化数据显示结果。

?

? ??format基本语法结构如下:

? ? format(数值, “格式字”)

    格式字是由数字、点、字符组成例如 ‘m.nf’ ?的m是指整个输出占几个输出的字符位,n的含义是小数点后保留几位小数

    ? ??举例说明

    ??? eg1. 格式化输出浮点数n的作用? ?

    [python]?view plaincopy
    1. amount_due?=?5000.0???
    2. monthly_payment?=?amount_due?/?12.0???
    3. print('The?monthly?payment?is')??
    4. print(format(monthly_payment,?'.2f'))??

    ? ???输出结果为:?? ?

    [python]?view plaincopy
    1. The?monthly?paymentis??
    2. 416.67??

    ?

      本例'.2f'的含义是输出数据保留2为小数。

    ? ? eg2. 格式化字符串m的作用

    [python]?view plaincopy
    1. print(format(12345.6789,?'12.2f'))??
    2. print(format(12345.6789,?'.2f'))??

    ? ? ?输出结果为:

    Python学习入门基础教程(learning Python)-1.2.2 Python格式化输出基础

      从本例输出结果可看出,第1行代码输出时占了12个字符为,有对齐输出;第2行代码左对齐输出。那么如果n + 1 + 小数点前数字个数 ?> m,是不是就显示不下了呢?我们看下边的例子。??

    [python]?view plaincopy
    1. print(format(123456789.0123,?'18.2f'))??
    2. ????print(format(123456789.0123,?'11.2f'))??
    3. ????print(format(12345.6789,?'.2f'))??

    ? ? ?数据”123456789.0123“加点号共14个字符,?代码第1行格式控制字是18.2f,意思是print输出占18个字符位,数据共14个字符小于18,右对齐输出没问题,能打印的下。

    ? ? ?代码第2行format函数格式控制字是11.2f,意思是print输出占11个字符位,数据共14个字符大于11,怎么办?不能把多余的给删除了吧,python此时处理办法是保证数据正确性,忽略格式控制字m不够长度的情况,左对齐输出正确数据,不管m(这里是11)。

    ? ? ?代码第3行,输出时只限定了小数点后保留几位,左对齐输出数据。

    ? ? ??输出结果为:?? ?

    [python] view plaincopy
    1. ??????123456789.01??
    2. 123456789.01??
    3. 12345.68??

    ?

热点排行