askvity

How to Print the Digits of a Number in Python?

Published in Python Programming 3 mins read

You can print the digits of a number in Python using a combination of string conversion and iteration, or through mathematical operations. Here are a few common methods:

Method 1: String Conversion and Iteration

This method converts the number to a string and then iterates through each character (digit) of the string.

def print_digits_string(number):
  """Prints the digits of a number using string conversion."""
  number_string = str(number)
  for digit in number_string:
    print(digit)

# Example usage
print_digits_string(12345)

This code first converts the number to its string representation using str(number). Then, it iterates through each character in the string, and because each character represents a digit, it prints each digit.

Method 2: Mathematical Operations (Reverse Order)

This approach uses the modulo operator (%) to extract the last digit and integer division (//) to remove the last digit in each iteration. This method prints the digits in reverse order.

def print_digits_reverse(number):
  """Prints the digits of a number in reverse order using mathematical operations."""
  while number > 0:
    digit = number % 10
    print(digit)
    number = number // 10

# Example usage
print_digits_reverse(12345)

This code repeatedly extracts the last digit using the modulo operator (% 10), prints it, and then removes the last digit using integer division (// 10). It continues until the number becomes 0.

Method 3: Mathematical Operations (Correct Order)

To print the digits in the correct order using mathematical operations, you can first determine the number of digits and then use division to extract each digit. This method is more complex.

import math

def print_digits_correct_order(number):
  """Prints the digits of a number in the correct order using mathematical operations."""
  if number == 0:
      print(0)
      return

  num_digits = int(math.log10(number)) + 1  # Calculate the number of digits
  power_of_10 = 10**(num_digits - 1)

  while power_of_10 > 0:
      digit = number // power_of_10
      print(digit)
      number %= power_of_10
      power_of_10 //= 10

# Example usage
print_digits_correct_order(12345)

This code calculates the number of digits using math.log10. Then, in each iteration, it extracts the leftmost digit by integer division (//) by the appropriate power of 10, prints it, updates the number by taking the remainder (%) when divided by the same power of 10 and reduces the power of 10.

Comparison of Methods

Method Description Order Ease of Use Suitable For
String Conversion Converts the number to a string and iterates. Correct Easy General use.
Mathematical (Reverse) Uses modulo and integer division. Reverse Medium When reverse order is acceptable.
Mathematical (Correct) Uses logarithms and division. Correct Complex When correct order is required and performance matters.

The string conversion method is generally the easiest to understand and use. The mathematical methods might be more performant for very large numbers, but the difference is usually negligible for typical use cases.

Related Articles