为什么会出现内存错误?

Nas*_*Ohi 1 python

这是我的代码:

i=int(input("enter your number"))
j=int(input("enter your number"))
if i>j: #making x always greater than y
    x=i
    y=j
elif i<j:
    x=j
    y=i
else:
    print("invalid")
k=y
cyclelength=[]
while k<=x:
    list=[k]
    while k!=1:
        if(k%2==0):
            k=i//2
        else:
            k=3*k+1
        list.append(k)
    cyclelength.append(len(list))
    k+=1
print(y," ",x," ",max(cyclelength))
Run Code Online (Sandbox Code Playgroud)

我得到以下异常:

Traceback (most recent call last):
  File "C:/Python32/uva100.py", line 21, in <module>
    list.append(k)
MemoryError
Run Code Online (Sandbox Code Playgroud)

jfs*_*jfs 5

你可能意味着k //= 2而不是k=i//2

def cyclelength(k):
    assert k > 0
    count = 1
    while k != 1:
       k = k // 2 if k % 2 == 0 else 3 * k + 1
       count += 1
    return count

k_with_max_cyclelength = max(range(y, x+1), key=cyclelength)
Run Code Online (Sandbox Code Playgroud)

或两者兼得:

k, max_cyclelength = max(((k, cyclelength(k)) for k in range(y, x+1)),
                         key=lambda pair: pair[1])
Run Code Online (Sandbox Code Playgroud)