Chinaunix

标题: python百分号的意思? [打印本页]

作者: zhnghaijin    时间: 2012-01-19 14:38
标题: python百分号的意思?
def progress(width, percent):
    print "%s %d%%\r" % (('%%-%ds' % width) % (width * percent / 100 * "="), percent),
    if percent >= 100:
        print
        sys.stdout.flush()
这段代码中 '%%-%ds' 百分号什么意思?
作者: zhnghaijin    时间: 2012-01-20 09:40
木有人知道?
作者: greatghoul    时间: 2012-01-20 10:43
  1. ('%%-%ds' % 24)   # 结果为: '%-24s'

  2. # 代入到 ('%%-%ds' % width) % (width * percent / 100 * "=")
  3. '%-24s% (24 * 50 / 100 * "=")
  4. # 结果为 ============
复制代码

作者: lastfile    时间: 2012-01-20 13:26
大概知道怎样用,但不会解释
作者: zhnghaijin    时间: 2012-01-20 14:52
回复 3# greatghoul


    ok
作者: yangkyo821    时间: 2012-01-20 16:40
%d 是格式控制字符,类似的有%s, %f,%e 等
%% 输出一个%
作者: bzhao    时间: 2012-07-29 13:22
本帖最后由 bzhao 于 2012-07-29 13:23 编辑

>>> '%%-%ds' % 10
'%-10s
>>> "%-10s" % (10 * "=")
'=========='


作者: crifan    时间: 2012-07-29 22:28
本帖最后由 crifan 于 2012-07-29 22:29 编辑

%+一个字母,类似于C语言中最常用的printf,所指的是字符串的格式化。
不同的字母,标示不同的变量的类型。
最常见的有%d表示数字,%s表示字符串,%f表示浮点数等。
当然还有辅助的数字,前缀0等,去更加控制更加复杂的格式,详情去学习printf的字符串格式化参数。
而如果想要打印输出%字符本身,对应的就用%%表示了。
(类似的做法,就像正则表达式中想要输出反斜杠,用\\来表示一样。)
举例:

【C语言】
  1. int intVal = 123;
  2. char stringVal[5] = "hello";
  3. printf("%d,%s", intVal, stringVal);//输出:123,hello
复制代码

【Python语言】
  1. intVal = 123;
  2. stringVal = "hello";
  3. print "%d" % intVal; #输出:123
  4. print "%s" % stringVal; #输出:hello
  5. #遇到多个变量,用括号括起来:
  6. print "%d,%s" % (intVal, stringVal); #输出:123,hello
复制代码

python中更加复杂的打印输出,可以使用logging模块。
其输出用法,和printf非常类似。





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2