Different result when i switch positions of my two different functions

Note – I am using VSCode

Sample 1: In this example my function nextSquare() is been executed, but aFunc() is not been executed, as in, i get no output for my 2nd function

def nextSquare():
    i = 1
    while True:
        yield i*i
        i += 1
for num in nextSquare():
    if num<100:
        print(num)

def aFunc():
    print("This is inside our function")
print("This is outside of our funcion as a seperate entity")

aFunc()

Output:

Code/RoughWork.py
1
4
9
16
25
36
49
64
81

Sample 2: In this example my function nextSquare() is been executed, but aFunc() gives me output, all i did is, just shift aFunc() before nextSquare()

def aFunc():
    print("This is inside our function")
print("This is outside of our funcion as a seperate entity")

aFunc()

def nextSquare():
    i = 1
    while True:
        yield i*i
        i += 1
for num in nextSquare():
    if num<100:
        print(num)

Output:

Code/RoughWork.py
This is outside of our funcion as a seperate entity
This is inside our function
1
4
9
16
25
36
49
64
81

so when i used the sample 1: in the above code block, i expected that both the functions will get executed, but they didn’t, instead by rearranging the function’s positions, i got an output, so why is that why did the position of what existed before what mattered in this scenario,and when i try the same in jupyter notebook, the cell doesn’t run at all for sample 2.

>Solution :

The for loop never ends, so nothing after it is executed. When num is more than 100 it stops printing, but it keeps looping. You need to stop the loop.

for num in nextSquare():
    if num<100:
        print(num)
    else:
        break

Leave a Reply