2014-09-25 90 views
0

蟒蛇的xrange这就是我想要做的事:0 * L到L

l = 4 
length = 10**l #10000 
for x in xrange(length): 
    password = str(username)+str("%02d"%x) #but here instead of 2 i want it to be l 

,你可以看到我要控制具有可变女巫格式字符串我可以对我自己 我试着做做这样的:

password = str(username)+str("%0"+str(l)+"d"%x) 

,但它给我一个错误告诉我:格式化

+0

什么' “d” %x'是吧' “%d” %x'? – Kasramvd 2014-09-25 13:56:58

回答

1

字符串转换的过程中并不是所有的参数可以使用*格式说明:

>>> '-%0*d' % (4, 9) 
'-0009' 
>>> '-%0*d' % (9, 9) 
'-000000009' 

按照String formatting operations documentation

最小场宽度(可选)。 如果指定为“*”(星号),则实际 宽度从元组中的值的下一个元素读取,和 转换的对象来最小字段宽度和可选 精度之后。使用str.format

备选:

>>> '-{:0{}}'.format(9, 4) 
'-0009' 
>>> '-{:0{}}'.format(9, 9) 
'-000000009' 
+0

我实际上想从0000到9999循环,但我想要的长度由一个变量控制,它可能从00 99 ..etc – s4my 2014-09-25 14:29:46

+0

@ s4my,答案是字符串格式化部分(for '循环)。你可以在我的答案中重用你的'for'循环。 – falsetru 2014-09-25 14:30:42

+0

@ s4my,'为x在xrange(长度):密码='%s-%0 * d'%(username,l,x)' – falsetru 2014-09-25 14:32:20