Python只能使用变量

时间:2017-04-23 12:30:58

标签: python

我正在玩Python,但遇到了一些我无法解释的行为。

当我将地图(我相信它在Python中调用的字典)定义到我的文件顶部时,然后在运行代码两次时,我会得到一个数组String index out of range。但是当我在我的方法中定义地图/字典时,它会一遍又一遍地运行。

尝试给出一个最小的例子。这是我正在运行的主要方法

if __name__ == '__main__':
while True:
    hex = convert_binary_to_hex([1,1,1,1])
    print(hex)

这将调用一个函数,将文件拆分为正确的部分等。所有琐碎的事情。 一旦我得到十进制的结果(所以[1,1,1,1]变为15),我调用这个函数,这是错误发生的地方:

def decimal_sum_chunk(chunk):
    chunk.reverse()
    sum = 0
    for i in range(len(chunk)):
        sum += chunk[i] * (2**i)

return digit_to_hex(sum)

def digit_to_hex(number):
    if number < 10:
        return str(number)

    # else we look up the value in the map
    return hex[number]

如果我在文件顶部定义了十六进制,则会发生错误:

hex = {10 : 'A', 11 : 'B', 12 : 'C', 13 : 'D', 14 : 'E', 15 : 'F'}

我可以使用完全相同的代码,但通过在那里定义地图来改变最后一个功能,它将完美地运作:

def digit_to_hex(number):
    hex = {10 : 'A', 11 : 'B', 12 : 'C', 13 : 'D', 14 : 'E', 15 : 'F'}

    if number < 10:
        return str(number)

    # else we look up the value in the map
    return hex[number]

我创建了这个gist,当无效时会显示完整的代码。为了使它工作,我可以将hex地图/字典放在函数内。

谢谢!

0 个答案:

没有答案