我希望有一个range()函数在不同的基础上工作(即基数为4)。
如果已知数字位数,我可以执行以下操作:
for a in range(4):
for b in range(4):
print str(a) + str(b)
但是,需要生成的数字量是未知的。我想我会需要某种递归。
答案 0 :(得分:3)
import itertools
import string
digits_len = 2
digits_repr = string.digits[:4]
for digits in itertools.product(digits_repr, repeat=digits_len):
print ''.join(digits)
答案 1 :(得分:0)
感谢jonrsharpe的评论,我提出了以下解决方案。不优雅,但做的工作!谢谢!
import string
digs = string.digits + string.letters
def int2base(x, base):
if x < 0:
sign = -1
elif x == 0:
return digs[0]
else:
sign = 1
x *= sign
digits = []
while x:
digits.append(digs[x % base])
x /= base
if sign < 0:
digits.append('-')
digits.reverse()
return ''.join(digits)
base = 4
digits = 2
for x in range(base**digits):
print int2base(x, base).zfill(digits)