为什么布尔变量不能设置为True?

2024-10-06 09:26:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个代表记忆的列表。“-”字符表示其中的空白。
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。
这是输出:


Tags: infordatalenif空间rangemem
1条回答
网友
1楼 · 发布于 2024-10-06 09:26:53

这段代码将更清晰,不太明确的索引争论。您只是在寻找一个mem片,它等于" -"这样的字符串 长度由randSize决定。你知道吗

(我假设mem是一个列表,因此可以通过分配给一个片段来进行变异。如果mem是一个字符串,则需要进行一些更改。如果mem是另外一回事,那么可能需要做一些其他的更改。)

class MemoryAllocationError(Exception):
    pass

def memAlloc(mem, data):
    randSize = randint(1, len(mem)//4)

    data = [data] * randSize  # Assuming data is a single character

    slot = ["-"] * randSize

    for i in range(len(mem) - randSize):
        if mem[i:i+randSize] == slot:
            break
    else:
        raise MemoryAllocationError("Not enough memory space")

    mem[i:i+randSize] = data

    return mem

相关问题 更多 >