Home > Back-end >  Python: Program running fine but skipping over output lines in code
Python: Program running fine but skipping over output lines in code

Time:01-21

When I run the following code:

def collatz(number):
   if number % 2 == 0:
       return number // 2
       result = number
       print(number)
   elif number % 2 == 1:
       return 3 * number   1
       result = number
       print(number)


n = input('Enter a number: ')
while n != 1:
   n = collatz(int(n))

the code runs to get the number to 1, but it always seems to skip the lines

result = number
print(number)

because it does not show any output. But when I visualize it, it is running the number to one. Could someone help explain why that is happening? Thanks so much.

CodePudding user response:

You are using a recursive loop that bypasses those two statements.

def collatz(number):
   if number % 2 == 0:
       return number // 2 <---- exits function here
       result = number
       print(number)
   elif number % 2 == 1:
       return 3 * number   1  <---- exits function here
       result = number
       print(number)

The same concept applies if you have the following function.

def add(x,y):
    return x   y
    print(x)

You would never get to the print(x) statement as you are exiting the function before that line of code!

CodePudding user response:

You need to remove the return statement. Return exits the collatz function immediatly.

CodePudding user response:

this is because it returns the value and it doesn't continue after the return, so you could do:

def collatz(number):
   if number % 2 == 0:
       result = number / 2
       print(result)
       return result
   elif number % 2 == 1:
       result = 3 * number   1
       print(result)
       return result


n = input('Enter a number: ')
while n != 1:
   n = collatz(int(n))

CodePudding user response:

When a function sees return it ends immediately and outputs the value after the word. So to get the lines to run, they need to be before the word return:

def collatz(number):
   if number % 2 == 0:
       result = number
       print(number)
       return number // 2
   elif number % 2 == 1:
       result = number
       print(number)
       return 3 * number   1


n = input('Enter a number: ')
while n != 1:
   n = collatz(int(n))
  •  Tags:  
  • Related