0

This is my code

 def collatz(number):
   while number != 1:
    if number % 2 == 0:
     print (number // 2)
     number = number // 2


    elif number % 2 == 1:
     print (number *3 +1)
     number = number *3 + 1

print( 'Enter number:' )

try:
 number = int(input())
 collatz(number)
except ValueError:
 print( 'Enter a integer')

My query is regarding how do I keep asking the user to 'Enter a integer' for collate() to run.

As after the

     except ValueError

The input of the integer does not run collate(number). Nor does the input of a string results in 'except ValueError' as well.

Cre8tion
  • 1
  • 2

1 Answers1

1

I am not an expert in python but you can try something like the following and also add a check for 0 as input. The program will go in infinite loop if you input 0.

def collatz(number):
   while number != 1:
    if number % 2 == 0:
     print (number // 2)
     number = number // 2


    elif number % 2 == 1:
     print (number *3 +1)
     number = number *3 + 1

def getInput():
    try:
        number = int(input())
        collatz(number)
    except ValueError:
        getInput()

print( 'Enter number:' )
getInput()
Kamran
  • 2,711
  • 2
  • 17
  • 24