Python Force python保持int变量的前导零

Dan*_*676 7 python variables int zero

下面是一段代码,它是功能解密和加密程序的一部分.

while checkvar < maxvar: # is set to < as maxvar is 1 to high for the index of var
    #output.append("%02d" % number)
    i =ord(var[checkvar]) - 64 # Gets postional value of i
    i = ("%02d" % i)
    if (checkvar + 1) < maxvar:
        j =ord(var[(checkvar + 1)]) - 64 # Gets postional value of i
        j = ("%02d" % j)
        i = str(i) + str(j) #'Adds' the string i and j to create a new i
    li.append(int(i))
    checkvar = checkvar + 2

print li
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,i和j这两个变量首先被视为字符串,在任何单个数字前面添加0(作为字符串).然后将这些变量组合成一个四位数字(仍然是一个字符串).在程序的后期,创建的数字用于pow功能.AS ints删除任何前导零.

我的问题:是否有可能强制python保持int的前导零.我已经并继续在线搜索.

编辑

为了帮助我已经包含该程序的加密部分的人.这就是问题所在.在上面的代码中创建的变量通过pow()函数传递.由于这不能处理字符串,我必须将变量转换为丢失前导​​零的整数.

#a = li[]
b=int(17)#pulic = e
c=int(2773)#=n

lenli=int(len(li))
enchecker = int(0)

#encrpted list
enlist = []

while enchecker < lenli:
    en = pow(li[enchecker],b,c)#encrpyt the message can only handle int
    enlist.append(int(en))
    enchecker = enchecker + 1

print enlist
Run Code Online (Sandbox Code Playgroud)

小智 19

虽然上面的注释对于1,01和001都是真的,但它们都与INT相同,但它在时间建模或顺序电影制作中非常有用,可以保持前导零.我经常这样做以确保影片剪辑的顺序正确.这样做的简单方法是使用zfill.zfill确保数字的str版本至少是你告诉它的字符数,并通过用零填充字符串"number"的左侧来实现.

>>> x = int(1)    
>>> NewStringVariable = str(x).zfill(3)    
>>> print NewStringVariable    
001    
>>> NewStringVariable = str(x).zfill(5)    
>>> print NewStringVariable    
00001
Run Code Online (Sandbox Code Playgroud)

  • 在我看来,这个答案应该被接受。 (3认同)
  • 这将成为“字符串”类型,而不是“整数”类型。在上下文中“ TYPE”很重要。如果我们希望新变量为“字符串类型”,这是一种好方法,但是如果我们需要“整数”类型,则为否。 (2认同)
  • @Xonshiz 在 int 类型中保留前导 0 是没有意义的。1、01 和 001 都只是 1,唯一需要前导零的时候是为了显示目的。 (2认同)

Mar*_*som 13

前导零的概念是显示概念,而不是数字概念.您可以在数字上放置无数个前导零而不更改其值.由于它不是数字概念,因此不会与数字一起存储.

将数字转换为字符串时,您必须确定需要多少个零.如果需要,您可以单独保留该号码.