w3resource

Python: Check whether a number is "happy" or not

Python Basic - 1: Exercise-66 with Solution

From Wikipedia, the free encyclopaedia:
A happy number is defined by the following process:
Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers.
Write a Python program to check whether a number is "happy" or not.

Sample Solution:

Python Code:

# Function to check if a number is a Happy Number
def is_Happy_num(n):
    past = set()  # Set to store previously encountered numbers during the process
    while n != 1:  # Continue the process until the number becomes 1 (a Happy Number) or a cycle is detected
        n = sum(int(i) ** 2 for i in str(n))  # Calculate the sum of squares of each digit in the number
        if n in past:  # If the current number has been encountered before, it forms a cycle
            return False  # The number is not a Happy Number
        past.add(n)  # Add the current number to the set of past numbers
    return True  # If the process reaches 1, the number is a Happy Number

# Test cases
print(is_Happy_num(7))
print(is_Happy_num(932))
print(is_Happy_num(6))

Sample Output:

True
True
False

Explanation:

Here is a breakdown of the above Python code:

  • Define a function named "is_Happy_num()" that takes a number 'n' as input.
  • Initialize a set called 'past' to keep track of previously encountered numbers during the process.
  • Use a while loop to continue the process until the number becomes 1 (a Happy Number) or a cycle is detected.
  • Inside the loop, calculate the sum of the squares of each digit in the current number.
  • Check if the current number has been encountered before. If yes, it forms a cycle, and the number is not a Happy Number.
  • Add the current number to the set of past numbers.
  • Return 'True' if the process reaches 1, indicating that the number is a Happy Number.
  • Test the function with different inputs to check its functionality.

Visual Presentation:

Python: Check whether a number is 'happy' or not

Flowchart:

Flowchart: Python - Check whether a number is 'happy' or not

Python Code Editor:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous: Write a Python program to find the longest word in set of words which is a subsequence of a given string.
Next: Write a Python program to find and print the first 10 happy numbers.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.