Divmod替代方法

时间:2013-12-02 00:32:12

标签: python

我正在寻找转换基地的问题,我在这里使用divmod找到了解决方案。代码看起来像这样。

    integer = 0
for character in innitvar:
    assert character in SY2VA, 'Found unknown character!'
    value = SY2VA[character]
    assert value < basevar, 'Found digit outside base!'
    integer *= basevar
    integer += value


array = []
while integer:
    integer, value = divmod(integer, convertvar)
    array.append(VA2SY[value])
answer = ''.join(reversed(array))

这个好人根据余数和整数描述了关于如何使用divmod的一些方法,但我想知道是否有人在没有divmod的情况下有另一种方法可以做到这一点,这样我就能更清楚地理解它。我想我也问,如果不使用divmod就可以做到这一点。

感谢您的任何建议!

2 个答案:

答案 0 :(得分:3)

那么,

integer, value = divmod(integer, base)

相当于

value = integer % base
integer //= base

这有帮助吗?也许有一个临时变量,而且啰嗦:

temp = integer // base
value = integer - temp * base
integer = temp

将其设为10的幂,例如base = 100。然后从12345开始,

integer, value = divmod(12345, 100)

产生integer = 123value = 45。也就是说,divmod(whatever, 100)将最后两位数字作为第二个返回值剥离,将其余数字作为第一个返回值传递。

答案 1 :(得分:1)

嗯,你可以单独进行除法和模数运算。

def int2str(integer, base):
    digits = []
    while integer:
        value = integer % base
        integer = integer / base
        digits.append(dictionary[value])
    return ''.join(reversed(digits))