저는 Project Euler 웹 사이트의 문제를 해결하기 위해 Python을 배우려고합니다. 나는 내가하고 싶은 코드가 무엇인지 정확하게 알고 있으며, 내 메서드는 종이에서 작동하지만 코드를 작동시킬 수는 없다.내 파이썬 기능이 콘솔에서 작동하지만 코드에서 호출되지 않는 이유는 무엇입니까?
GitHub의 링크 : 나는 두 가지 기능, 대상 번호의 요인을 작동 하나, 주어진 숫자가 소수 여부를 확인 하나를 만들었습니다 https://github.com/albyr/euler-python/blob/master/euler3.py
.
# Function that finds all the factors of a given number
def findfactors(n):
# for i in range(1,int(sqrt(n)+1)):
for i in range(1,n+1):
if n/i == int(n/i):
factors.append(i)
# Function that checks if a number is prime
def checkprime(n):
# Trial division
for i in range(2,int(sqrt(n)+1)):
if n/i == int(n/i):
# Number gives a remainder upon division and therefore is not prime
isprime = False
break
else:
isprime = True
if isprime == True:
return True
elif isprime == False:
return False
나는 코드가 끔찍한 것처럼 보입니다. 그러나 내가 파이썬 쉘 사용하는 경우 작동합니다
>>> checkprime(9)
False
>>> checkprime(79)
True
>>> checkprime(factors[3])
True
을하지만 F5와 함께 프로그램을 실행할 때 얻을 :
Traceback (most recent call last):
File "/home/alby/euler-python/euler3.py", line 45, in <module>
checkprime(factors[i])
File "/home/alby/euler-python/euler3.py", line 32, in checkprime
if isprime == True:
UnboundLocalError: local variable 'isprime' referenced before assignment
내가 (하드 코드 번호를 프로그램 내에서 checkprime 함수를 호출하는 경우 예 : checkprime(77)
) 출력이 전혀 없습니다. 나는 이것이 내가 이해하지 못하는 파이썬이 작동하는 방식에 대해 기본적인 것이지만, 나는 내 삶을 위해 무엇을 해결할 수 없는지 확신한다.
제안 사항?
아무 것도 인쇄하지 않기 때문에 결과물이 나오지 않습니다. 콘솔과 달리 최상위 함수 호출은 정상적으로 실행되면 결과를 자동으로 인쇄하지 않습니다. – Amber
글쎄, 오류가 아주 분명합니다 : 루프가 입력되지 않으면 초기화되지 않은 변수를 읽는 것입니다. 일반적으로 체크 프라임을 작성하는 것은 매우 이상한 방법입니다. 루프를 통과하면 true를 반환하고 루프에서는 false를 반환합니다. – Voo