So I'm trying to complete some of the project Euler challenges in Python3.6 and I've run into this problem:
def divisors(n):
divisors = []
for i in range(2, round(n/2)+1):
if n%i == 0:
divisors.append(int(n/i))
divisors.append(1)
return sum(divisors)
def checkAmicable(n):
if divisors(divisors(n)) == n:
if divisors(n) != n:
return True
else:
return False
def main():
amicables = []
for i in range(1,20000):
if checkAmicable(i) == True:
if (divisors(i)+i) not in amicables and divisors(i)<10000:
amicables.append(divisors(i)+i)
print(sum(amicables))
main()
This is my solution to problem 21 (euler21.py), it works and gives the sum of the amicable pairs as asked. I want to be able to import the function "divisors(n)" into another file of code (in this case euler23.py).
From my understanding this should work:
from euler21 import divisors
print(divisors(220))
And this should simply print 284, however, when executing it, the entire euler21 code executes and I get the results of that program, plus the 284 at the end, like this:
31626
284
Any suggestions? Could it be due to me using my command line as opposed to the IDE?
TL;DR: imported file executes entire code, not the specifically called function.