为什么我的布尔变量没有设置为True?

时间:2018-12-21 16:17:58

标签: python arrays

我有一个代表内存的列表 mem “-” 字符表示其中为空白。
memAlloc 函数需要查找可用空间(考虑到碎片存储)并用填充数据 randSize 中的数据值。

def memAlloc(mem, data):
    randSize = randint(1, len(mem)//4)
    writeStart = 0
    writeSize = 0
    found = False

    for i in range(len(mem)):
        if(mem[i] == "-"):
            writeStart = i
            writeSize = 0
            for j in range(i, len(mem)):
                if(mem[j] == "-"):
                    writeSize += 1
                if(writeSize == randSize):
                    found = True
                    break
                else:
                    break
        if(found):
            break

    if(found):
        i = writeStart
        for j in range(writeSize):
            mem[i] = data
            i += 1
    else:
        print("Error: Not Enough Memory Space!")

    return mem

我真的找不到内存不足的原因。
似乎从未将变量 found 设置为True,该变量表示已找到可用空间。
这是输出:

1 个答案:

答案 0 :(得分:1)

使用较少明确的索引整理,此代码将更加清晰。您只是在寻找mem的单个片段,该片段等于诸如"-----"这样的字符串, 长度由randSize确定。

(我假设mem是一个列表,因此可以通过分配给切片来对其进行更改。如果mem是一个字符串,则需要进行一些更改。如果{{ 1}}完全是另外一回事,可能需要其他一些更改。)

mem