해결책은 아마도 간단하지만, 나는 그 사실을 알 수 없습니다. 코드는 간단합니다. 피보나치 숫자 생성기입니다. 목표는 4,000,000 이하의 모든 피보나치 수를 합산하는 것입니다.파이썬 : 모듈러스 연산자로 이상한 행동이 있습니다.
내 접근 방식은 첫째 4,000,000 아래의 모든 피보나치 숫자를 생성하는 것입니다, 다음 중 하나를 은)로부터 이상한 것들을 제거 (이 잘 작동) b)는 "심지어") 짝수 사람과 (새로운 목록을 생성 목록 "모두"
그러나 후자의 경우 출력은 이해할 수없는 이유 때문에 다음과 같습니다. [2, 5, 8, 21, 34, 89, 144, 377, 610, 1597 , 2584, 6765, 10946, 28657, 46368, 121393, 196418, 514229, 832040, 2178309, 3524578]
어떤 도움을 많이 주셨습니다. 감사!
all = []
even = []
def fibonacci():
a, b = 1, 2
while a < 4000000:
all.append(a)
a, b = b, a + b
print all
##Putting all the even fibonacci numbers in a different list and summing them up works fine
# for i in all:
# if i % 2 == 0:
# even.append(i)
# print even
# print sum(even)
# But for some strange reason I can't figure out how to remove the odd numbers from the list
for i in all:
if i % 2 != 0:
all.remove(i)
print all
print sum(all)
fibonacci()
을 당신이 변수 이름으로 "모두"사용하지 않는 것이 좋습니다 :
당신은 단순히 슬라이스 연산자를 사용하여 그렇게 할 수 있습니다. [all] (http://docs.python.org/library/functions.html#all)이라는 매우 유용한 내장 함수가있어서 편리합니다. – DSM
DSM, 이것을 지적 해 주셔서 감사합니다! – talkinghead
또한 누군가가 fibonacci 시퀀스에 대해 궁금해하는 경우 : 예, 일반적으로 0, 1, 1, 2, ...로 시작하지만이 문제에 대한 Project Euler 지침에서는 1, 2, ...로 시작합니다. – talkinghead