zoukankan      html  css  js  c++  java
  • python print 进度条的例子

    def progress(width, percent):
        print "%s %d%%
    " % (('%%-%ds' % width) % (width * percent / 100 * "="), percent),
        if percent >= 100:
            print
            sys.stdout.flush()
    

    首先,先说明一下print的一些用法:

    和C语言一样,字符串里的匹配使用‘%’和相关的转移类型组成的:

    转换类型          含义

    d,i                 带符号的十进制整数
    o                   不带符号的八进制
    u                   不带符号的十进制
    x                    不带符号的十六进制(小写)
    X                   不带符号的十六进制(大写)
    e                   科学计数法表示的浮点数(小写)
    E                   科学计数法表示的浮点数(大写)
    f,F                 十进制浮点数
    g                   如果指数大于-4或者小于精度值则和e相同,其他情况和f相同
    G                  如果指数大于-4或者小于精度值则和E相同,其他情况和F相同
    C                  单字符(接受整数或者单字符字符串)
    r                    字符串(使用repr转换任意python对象)
    s                   字符串(使用str转换任意python对象)

    >>> pi = 3.141592653
    >>> print('%10.3f' % pi) #字段宽10,精度3
         3.142
    >>> print("pi = %.*f" % (3,pi)) #用*从后面的元组中读取字段宽度或精度
    pi = 3.142
    >>> print('%010.3f' % pi) #用0填充空白
    000003.142
    >>> print('%-10.3f' % pi) #左对齐
    3.142     
    >>> print('%+f' % pi) #显示正负号
    +3.141593
    

    %-NType:

    这样表示显示字符串预留的长度. 例如

    print('%-10.3f' % pi)

    表示显示pi保留小数点以后3位,字符串的宽度为10.

    好,现在我回到开头的函数,并做一些说明:

    现在假设width = 100, percent = 2.

    可以看出,这里的字符串是嵌套的,我们首先对第一个表达式进行解析,那么

    ('%%-%ds' % width)

    的内容是: str1 = '%-100s',这个字符串嵌套了后一个字符串的内容,也就是

    (width * percent / 100 * "=")

    根据python的字符串可以相乘的原理,我们得到这个字符串其实就是str2 = 100*2/100*"=",也就是两个等号‘==’。

    由于str2是嵌入在str1中的,那么我们继续对此进行解析,这里是str1的意思就是显示str2, 并使得字符串的宽度为100. 不足的用空格填充。

    所以我们得到"==                                                                                                  " , 2%

    所以当percent变化时,程序就打印用等号表示的进度条。

  • 相关阅读:
    牛客(14)链表中倒数第k个结点
    牛客(13)调整数组顺序使奇数位于偶数前面
    牛客(12)数值的整数次方
    牛客(11)二进制中1的个数
    牛客(10)矩形覆盖
    牛客(9)变态跳台阶
    牛客(8)跳台阶
    牛客(7)斐波那契数列
    Docker数据卷
    Docker镜像
  • 原文地址:https://www.cnblogs.com/frischzenger/p/3794578.html
Copyright © 2011-2022 走看看