該程序的目標是爲函數'Fib'取兩個值,並將它們通過一個Fibonacci序列,並在變量「序列」中添加條件。當它通過'check'函數並返回Limit Reached時,它會將偶數值添加到'final'列表中,然後在循環後打印出'final'的總和。爲什麼函數不打印列表中的值的總和?
問題是無論Fib取什麼樣的值,'final'總是以沒有值爲結束。我很新的節目,似乎無法弄清楚它爲什麼這樣做?
def even(x):
v = list(str(x))[-1]
if v == '0' or v == '2' or v == '4' or v == '6' or v == '8':
return x
else:
return 0
def check(sequence):
for v in sequence:
if v >= 20:
return 'Limit Reached'
else:
return None
def Fib(x,y):
sequence = [x,y]
a = 0
b = 1
final = []
while len(sequence) < 100:
term = sequence[a] + sequence[b]
sequence.append(term)
if check(sequence) == 'Limit Reached':
for v in sequence:
final.apppend(even(v))
print sum(final)
break
a += 1
b += 1
你可能需要做一些新的代碼: 在序列v: 如果V%2 == 0: final.append(V) – darkphoenix 2012-07-09 21:26:46
據我所知,Fib()函數對整數進行操作,所以更好的方法是進行位操作:'somevalue&1'什麼是平等的1只有當數字是奇數時(不是偶數) – ddzialak 2012-07-09 21:42:29
@ddzialak:可能最好使用'%'作爲因爲該算子位於整數的語義域中,而不是它們的表示。我們可能能夠證明'a%2 == a&1',但除非我們最初着手按位進行操作,否則我認爲最好使用'%'。在某些情況下,可能有理由不採取這種做法,但這顯然是一個與初學者相關的問題,而不是看起來有點混亂的黑客。 – recursive 2012-07-09 21:45:36