나는 기본적으로 온라인에서 수학과 컴퓨터 과학적인 일인 '프로젝트 오일러'라는 코드를 작성하고 있으며, 링크는 여기 에서 찾을 수 있습니다 .
어쨌든 Python 3.5에있는 코드를 실행하면 커서 비트가 깜박이는 것 외에는 셸에서 아무 작업도 수행하지 않습니다. 문제의 코드는 다음과 같습니다.
`mylist=[]
a=1
b=2
c=a+b
def fib():
a=1
b=2
c=a+b
a=b
b=c
c=a+b
if a%2==0:
mylist.append(a) and print(a)
elif b%2==0:
mylist.append(b) and print(b)
elif c%2==0:
mylist.append(c) and print(c)
else:
print(end='')
while a and b and c<4000000:
fib()
print(sum(mylist))'
내가 대답하려는 질문은
값이 4 백만을 초과하지 않는 피보나치 수열의 항을 고려하여 짝수 값 항의 합을 찾으십시오.
이 코드는 최대 4 백만 개의 피보나치 수를 목록에 추가 한 다음 질문에 완벽하게 답할 수있는 합계를 인쇄하는 것을 의미하지만 작동하지 않는 것 같습니다.
여기에 무한 루프를 만들었습니다.
while a and b and c < 4000000:
이것은 "a는 진실이고 b는 진실이고 c는 4000000보다 작을 때"로 해석되며, 이것은 항상 True
while 루프가 종료되지 않도록합니다. "truthy"가 의미하는 바는 다음과 같습니다. bool(value)
반환 True
합니까? 그렇다면 value
"진정한"것입니다. 그래서 1
, 'hello'
, []
, 등, truthy이며, 0
, False
, []
(그들은 "falsey"이다) 등이되지 않습니다. 나는 당신이 스스로 문제를 해결함으로써 더 많은 이익을 얻을 것이기 때문에 당신의 모든 논리에 대해 언급하지 않을 것입니다. 그러나 다음은 문제를 해결할 수있는 몇 가지 팁입니다.
당신은 그것을 확인하고 싶은 경우 a
, b
및 c
있습니다 모든 미만 4000000
이 작업을 수행 할 수있는 것보다, :
while a < 4000000 and b < 4000000 and c < 4000000:
또는 더 간결하게 :
while all(i < 4000000 for i in [a, b, c]):
무한 루프를 작성하지하려면 확인해야합니다 그 중 하나 a
, b
또는 c
그 값을 유죄로 프로그램의 어느 시점에서보다 4000000 될 것입니다. 당신이 할 수학은 a
, b
및 c
내부 사용자의 fib()
기능만을 조작하는 세 가지 변수라고 a
, b
그리고 c
그 함수에 로컬이; 그것의 값을 변경하지 않는 a
, b
그리고 c
외부에서 해당 기능을.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다