>>> def lcm(a,b):
if a<<b:
c=a
a=b
b=c
c=0
lit=[a,b,c]
n=3
while (not lit[n%3]%lit[(n%3)+1]==0):
lit[(n%3)+2]=lit[n%3]%lit[(n%3)+1]
if lit[(n%3)+2]==0:
d=lit[(n%3)+2]
print d
else:
n=n+1
這是代碼,試圖構建函數lcm,該函數找到a和b的最小公倍數。並不是真正的最乾淨的代碼,但遺憾的是這是我所能做的。如果這個代碼塊可能會更輕一點,那真的會很好。問:列表分配索引超出範圍
所以,呃,回到正題,我要求lcm,它只是脫口而出錯誤信息。
這是它說:
>>> lcm(78696,19332)
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
lcm(78696,19332)
File "<pyshell#1>", line 10, in lcm
lit[(n%3)+2]=lit[n%3]%lit[(n%3)+1]
IndexError: list assignment index out of range
Aaaaand我有完全不知道我現在該怎麼辦。
我現在可以做什麼?
[捕捉異常](https://docs.python.org/2.7/tutorial/errors.html#handling-exceptions )和除了套件外,打印''''''和''len(點亮)'''。我很確定這個錯誤是說你正在試圖給一個不存在的''''''''''指定一個值,就像'''len(lit)'''是2,你是試着做'''點亮[4] ='foo'''' – wwii
對我來說,如果一個名爲''n_mod3''的變量用於所有這些下標,我的眼睛會更容易 - 它可以被計算兩次,一次在循環之前,另一次當'''n'''變化時。 – wwii