X Tutup
"""Fibonacci Sequence, by Al Sweigart al@inventwithpython.com Calculates numbers of the Fibonacci sequence: 0, 1, 1, 2, 3, 5, 8, 13... This code is available at https://nostarch.com/big-book-small-python-programming Tags: short, math""" import sys print('''Fibonacci Sequence, by Al Sweigart al@inventwithpython.com The Fibonacci sequence begins with 0 and 1, and the next number is the sum of the previous two numbers. The sequence continues forever: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987... ''') while True: # Main program loop. while True: # Keep asking until the user enters valid input. print('Enter the Nth Fibonacci number you wish to') print('calculate (such as 5, 50, 1000, 9999), or QUIT to quit:') response = input('> ').upper() if response == 'QUIT': print('Thanks for playing!') sys.exit() if response.isdecimal() and int(response) != 0: nth = int(response) break # Exit the loop when the user enteres a valid number. print('Please enter a number greater than 0, or QUIT.') print() # Handle the special cases if the user entered 1 or 2: if nth == 1: print('0') print() print('The #1 Fibonacci number is 0.') continue elif nth == 2: print('0, 1') print() print('The #2 Fibonacci number is 1.') continue # Display warning if the user entered a large number: if nth >= 10000: print('WARNING: This will take a while to display on the') print('screen. If you want to quit this program before it is') print('done, press Ctrl-C.') input('Press Enter to begin...') # Calculate the Nth Fibonacci number: secondToLastNumber = 0 lastNumber = 1 fibNumbersCalculated = 2 print('0, 1, ', end='') # Display the first two Fibonacci numbers. # Display all the later numbers of the Fibonacci sequence: while True: nextNumber = secondToLastNumber + lastNumber fibNumbersCalculated += 1 # Display the next number in the sequence: print(nextNumber, end='') # Check if we've found the Nth number the user wants: if fibNumbersCalculated == nth: print() print() print('The #', fibNumbersCalculated, ' Fibonacci ', 'number is ', nextNumber, sep='') break # Print a comma in between the sequence numbers: print(', ', end='') # Shift the last two numbers: secondToLastNumber = lastNumber lastNumber = nextNumber
X Tutup