top

Search

Python Tutorial

.

UpGrad

Python Tutorial

ord in Python

Introduction

Every coder, at one point or another, stumbles upon the intricacies of character encoding. In Python, a programming giant, understanding these nuances can propel one's coding journey. The ord in Python, or ord(), is a foundation stone. In this tutorial, we’ll explore its depths, enabling you to optimize this function to your advantage.

Overview

Over the years, Python has built its reputation on an extensive library of built-in functions. Standing tall amongst them is the ord() function, known to fetch an integer representing the Unicode character. In this tutorial, we seek to unravel the operations of ord in Python, assisting developers in bridging the gap between rudimentary and expert Python know-how.

What is ord in Python?

Character encoding has always been a cornerstone of programming, especially in languages as versatile as Python. Within this vast universe of encoding, Unicode and ASCII stand as paramount standards. While ASCII, an older standard, uses 7 bits to represent each character, Unicode, with its 8 bits, promises a more inclusive representation, accommodating a broader range of characters from various scripts worldwide.

At the heart of this encoding world lies the ord() function in Python. Essentially, the purpose of ord() is to provide a bridge, a link that connects the world of characters to numbers. This function effectively transforms a character into its respective Unicode number. Its operation is beautifully simple: with the syntax ord(character), it swiftly returns the Unicode integer representing the character provided.

But in the vast sea of functions, what makes ord() so special? Its applications are endless. From encryption algorithms where character manipulation is vital, to data validation scenarios where understanding a character's numeric position is essential, ord() has proven indispensable.

Yet, understanding ord() in isolation is a half-baked story. Its counterpart, chr(), completes the narrative. If you think of ord() as the gateway from characters to their numeric identities, then chr() serves as a return portal. It does the opposite of ord(), taking numbers (especially those produced by ord()) and reverting them back into their character forms. For instance, while ord(b) in Python would yield a number, taking that number and placing it within chr() would give you 'b' back. This duality and balance between the two functions illuminate the true intricacies of character encoding in Python.

ord() Function Syntax

The ord() function in Python has the following syntax:

ord(character)

In the above syntax,

character: This is the character for which you want to find the Unicode code point (integer representation). It should be a string of length 1, representing a single character.

The ord() function takes a single argument, which is the character you want to convert to its Unicode code point. It returns an integer representing the Unicode code point of the character.

ord() Function Example

Code:

character = 'B'
unicode_value = ord(character)
print(f"The Unicode code point of '{character}' is {unicode_value}")
In this example, we use the ord() function to find the Unicode code point of the character 'B'. 
It will output:
The Unicode code point of 'B' is 66.

Error Condition while Using Ord(0)  

The ord() function expects a single character (a string of length 1) as an argument. If you pass an argument that is not a single character, it will raise a TypeError.

For example:

unicode_value = ord(0)  # This will raise a TypeError
The error message will be something like:
TypeError: ord() expected string of length 1, but int found
To use the ord() function correctly, you should pass a single character (string of length 1) as its argument.

ord() and chr() Functions in Python

1. Using ord() to Get the Unicode Code Point:

Code:

character = 'A'
unicode_value = ord(character)
print(f"The Unicode code point of '{character}' is {unicode_value}")

2. Using chr() to Convert Back to a Character:

The chr() function is used to convert a Unicode code point (integer) back into a character. You pass an integer to chr(), and it returns the corresponding character.

Code:

unicode_value = 65
character = chr(unicode_value)
print(f"The character corresponding to {unicode_value} is '{character}'")

Example of Using ord() and chr() Functions Together

Code:

character = 'A'
unicode_value = ord(character)
print(f"The Unicode code point of '{character}' is {unicode_value}")
# Now, let's use chr() to convert it back to a character
converted_character = chr(unicode_value)
print(f"Converting back to character: '{converted_character}'")

Advanced Use of ord() in Python

Password Strength Checker

In this program, we will create a password strength checker that evaluates the complexity of a user's password. We will use the ord() function to assess the strength based on character types.

Code:

def password_strength(password):
    has_lowercase = False
    has_uppercase = False
    has_digit = False
    has_special = False
    for char in password:
        # Check if the character is a lowercase letter
        if 'a' <= char <= 'z':
            has_lowercase = True
        # Check if the character is an uppercase letter
        elif 'A' <= char <= 'Z':
            has_uppercase = True
        # Check if the character is a digit
        elif '0' <= char <= '9':
            has_digit = True
        else:
            # Check if the character is a special character
            has_special = True
    strength = 0
    if len(password) >= 8:
        strength += 1
    if has_lowercase:
        strength += 1
    if has_uppercase:
        strength += 1
    if has_digit:
        strength += 1
    if has_special:
        strength += 1
    return strength
# Input password to check
user_password = input("Enter your password: ")
strength = password_strength(user_password)
if strength == 5:
    print("Strong password!")
elif strength >= 3:
    print("Moderate password.")
else:
    print("Weak password. Please consider strengthening it.")

Explanation:

The password_strength function evaluates the strength of a password by checking for various criteria: length, lowercase letters, uppercase letters, digits, and special characters.

The ord() function is not explicitly used here, but it indirectly plays a role in identifying character types by comparing their Unicode code points.

Custom Sorting Using Unicode Order

In this program, we will perform custom sorting of a list of strings based on their Unicode order, with special consideration for accented characters.

Code:

# Create a list of strings with accented characters
words = ["café", "über", "naïve", "élite", "château"]
# Custom sorting function that considers accented characters
def custom_sort(word):
    return [ord(char) for char in word]
sorted_words = sorted(words, key=custom_sort)
print("Sorted List of Words:")
for word in sorted_words:
    print(word)

Explanation:

In this program, we have a list of words containing accented characters, such as "café" and "naïve." We define a custom sorting function custom_sort that calculates a list of Unicode code points for each character in a word. This custom sorting key ensures that accented characters are correctly sorted in the list.

The ord() function is used to obtain the Unicode code points of each character within the custom_sort function. When we sort the list of words using sorted() and provide the custom_sort function as the key, the words are sorted in a way that correctly handles accented characters.

Unicode Character Frequency Analyzer

In this program, we will create a Unicode character frequency analyzer that analyzes the frequency of characters in a given text. We will use the ord() function to map characters to their Unicode code points and count their occurrences.

Code:

def character_frequency_analyzer(text):
    # Create a dictionary to store character frequencies
    character_freq = {}
    for char in text:
        # Use the ord() function to get the Unicode code point of the character
        unicode_value = ord(char)
        # Increment the character's frequency count in the dictionary
        if unicode_value in character_freq:
            character_freq[unicode_value] += 1
        else:
            character_freq[unicode_value] = 1
    return character_freq
# Input text to analyze
input_text = "Python is an amazing programming language with a rich character set."
# Analyze the character frequencies
freq_map = character_frequency_analyzer(input_text)
# Display character frequencies
print("Character Frequencies:")
for unicode_value, frequency in freq_map.items():
    character = chr(unicode_value)
    print(f"Character '{character}' (Unicode: {unicode_value}) appears {frequency} times.")

Explanation:

The character_frequency_analyzer function takes a text as input and analyzes the frequency of characters in the text. Inside the function, the ord() function is used to obtain the Unicode code point of each character in the text. A dictionary called character_freq is used to store the frequencies of characters, where the keys are Unicode code points, and the values are the corresponding frequencies.

The function iterates through the text, updates the character frequencies in the dictionary, and returns the resulting dictionary. Finally, the program displays the character frequencies, including the character itself (using chr() to convert the Unicode code point back to a character), the Unicode code point, and the frequency count.

Conclusion

Embracing the depths of the ord() function in Python unveils a world of enhanced coding proficiency. As the programming possibilities of Python expand, nuances such as these set a developer apart. If you're on the path to mastering Python, upGrad offers meticulously crafted courses tailored for upskilling. Your journey toward excellence has only just begun.

FAQs

1. How does chr in Python complement ord()?

chr() is the counter function to ord(). For any integer, chr() provides the corresponding Unicode character, ensuring a complete understanding of character encoding in Python.

2. Does ord(a) yield the same result as ord(z)?

No. Every character has a distinct Unicode value. ord(a) returns 97, whereas ord(z) results in 122.

3. Can you summarize the relationship between ord() and chr in Python?

Certainly. They are inversely related functions. ord() fetches a character's Unicode value, and chr() reverts a Unicode value back to its character representation.

4. Why might unsupported escape sequence in string literal Python arise?

This arises when an unrecognized escape sequence is used. It's crucial to ensure that only supported sequences are employed in Python strings.

5. How is ord(65) in Python manifested?

ord() expects a character. For the value 65, the correct usage would be chr(65), which yields the character 'A'. On the other hand, ord(‘A’) would give you 65.

Leave a Reply

Your email address will not be published. Required fields are marked *