简体   繁体   中英

Is there a more efficient way to make this program?

Is there a more efficient way to make this program?

#This is The Collatz Sequence Program

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


print('Please Enter a Number:')
try:
    n = int(input())
except ValueError:
    print('You must enter an integer:')
    n = int(input())


value = collatz(n)

while value != 1 :
    value = collatz(value)

Link: https://en.wikipedia.org/wiki/Collatz_conjecture

when you type 3 it goes like follows :

3
10
5
16
8
4
2
1
and it always ends with 1.

Check this out:

def collatz(number):
    if number % 2 == 0:
        return number // 2

    elif number % 2 == 1:
        return 3 * number + 1

while True:
  try:
      n = int(input('Please Enter a Number:'))
      print(n)
      while n!= 1:
        n = collatz(n)
        print(n)
      break
  except ValueError:
      print('You must enter an integer')

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM