【问题标题】:Python Four Digits CounterPython 四位计数器
【发布时间】:2011-03-10 06:53:38
【问题描述】:

我们如何使用python生成一个四位数的计数器?

range(0,9999)

将有 1 位数字、2 位数字和 3 位数字。我们只需要 4 位数字。

即0000 到 9999

当然,最简单的 Pythonic 方式。

【问题讨论】:

  • 您的 range() 调用实际上并没有产生 9999,而是在 9998 处停止。这是因为 range() 的“end”参数小于限制,如“生成所有数字”从 0 开始并小于 9999"。您需要改为使用 10000。
  • 如果你选择字符串格式化,please preferstr.format(*args, **kwargs) 到 %formatting.["{0:0>4}".format(i) for i in xrange(10)]
  • 我猜是为了便携。它是当前 (Python 3) 字符串格式化的习惯用法,它也适用于 Python >= 2.6。摘自我之前发布的页面:“这种字符串格式化方法是 Python 3.0 中的新标准,应该优先于新代码中字符串格式化操作中描述的 % 格式化。”。
  • Python 2.7+ 推荐的格式实际上是“{:0>4}”(不需要添加位置参数)。
  • @Guandalino:我认为您应该将您的评论放在答案中:您的格式字符串比当前建议的格式字符串更新。 :)

标签: python counter


【解决方案1】:

格式化要用 0 填充的字符串。要获得一个用零填充的 0 到 9999 的列表:

["%04d" % x for x in range(10000)]

同样适用于 5、6、7、8 个零等。请注意,这将为您提供一个字符串列表。没有办法用零填充整数变量,因此字符串尽可能接近。

同样的格式操作也适用于单个整数。

【讨论】:

    【解决方案2】:

    也许str.zfill 也可以帮助你:

    >>> "1".zfill(4)
    '0001'
    

    【讨论】:

    • 我想这应该是公认的答案。它简洁明了。效果非常好。
    【解决方案3】:

    你没有。您在输出或处理时格式化为 4 位。

    print '%04d' % val
    

    【讨论】:

      【解决方案4】:

      如果您想像许多人建议的那样选择字符串格式,并且您使用的 Python 版本不低于 2.6,请注意在其最新版本中使用字符串格式。而不是:

      ["%04d" % idx for idx in xrange(10000)]
      

      it is suggested 选择:

      ["{0:0>4}".format(i) for i in xrange(1000)]
      

      这是因为后一种方式在 Python 3 中被用作格式化字符串的默认习惯用法,我想这是增强代码对未来 Python 版本的可移植性的好主意。

      正如有人在 cmets 中所说,在 Python 2.7+ 中不需要指定位置参数,所以这也是有效的:

      ["{:0>4}".format(i) for i in xrange(1000)]
      

      【讨论】:

        【解决方案5】:

        而且真的是过火了,

        In [8]: class Int(int):
           ...:     def __repr__(self):
           ...:         return self.__str__().zfill(4)
           ...:     
           ...:     
        
        In [9]: a = Int(5)
        
        In [10]: a
        Out[10]: 0005
        

        【讨论】:

        • 如何获得 range(0,10000) 内的 4 位数字? for x in xrange(Int(0),Int(1000)) 不起作用。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-06
        • 2021-01-07
        • 2013-01-09
        • 2020-11-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多