Class 10 String Comparison ,Bitwise Operators,Chaining Comparisons

String Comparison with Relational Operators in Python ๐Ÿ’ฌโš–๏ธ

In Python, you can compare strings using relational operators (<, <=, >, >=, ==, !=). These comparisons are based on lexicographical (dictionary) order, which uses the Unicode code points of the characters. ๐Ÿ“–


How String Comparison Works ๐Ÿค”

  • Character-by-character comparison: Python compares strings character by character from left to right. โžก๏ธ
  • Unicode values: Each character is compared based on its Unicode code point value. ๐Ÿ”ข
  • Case sensitivity: Uppercase letters have lower Unicode values than lowercase letters (‘A’ is 65, ‘a’ is 97). ๐Ÿ”ก
  • Length matters: If all characters are equal, the shorter string is considered smaller. ๐Ÿ“

Examples ๐Ÿ’ก

Python

# Equality comparisons
print("hello" == "hello")   # True โœ…
print("Hello" == "hello")   # False (case matters) โŒ
print("hello" != "world")   # True โœ…

# Lexicographical comparisons
print("apple" < "banana")   # True ('a' comes before 'b') โœ…
print("apple" > "banana")   # False โŒ
print("apple" <= "apricot") # True ('p' < 'r') โœ…

# Case sensitivity
print("Apple" < "apple")    # True (uppercase comes before lowercase) โœ…
print("Zebra" < "apple")    # True (all uppercase before lowercase) โœ…

# Different length strings
print("hi" < "hello")       # False ('i' > 'e') โŒ
print("hi" < "high")        # True (shorter string when prefixes match) โœ…

Important Notes ๐Ÿ“Œ

  • ASCII/Unicode Order:
    • Digits (0-9) < Uppercase letters (A-Z) < Lowercase letters (a-z) ๐Ÿ”ข๐Ÿ…ฐ๏ธ๐Ÿ”ก
    • Special characters have their own positions in the Unicode table. โœจ
  • Case-insensitive comparison: To compare strings ignoring case, convert both to the same case first: โฌ‡๏ธPythonprint("Hello".lower() == "hello".lower()) # True โœ…
  • Locale-aware comparison: For language-specific sorting, use the locale module or special string comparison functions. ๐ŸŒ
  • Performance: String comparison is O(n) where n is the length of the shorter string. โฑ๏ธ

String comparison is fundamental for sorting algorithms, searching operations, and many other common programming tasks in Python. ๐Ÿš€

Bitwise Operators in Python ๐Ÿงฎ

Bitwise operators perform operations on integers at the binary level by manipulating individual bits. Here are all the bitwise operators available in Python with examples:


1. Bitwise AND (&) ๐Ÿค

Performs a logical AND on each pair of corresponding bits.

Python

a = 10    # 1010 in binary
b = 4     # 0100 in binary
print(a & b)  # 0 (0000 in binary)

2. Bitwise OR (|) โž•

Performs a logical OR on each pair of corresponding bits.

Python

a = 10    # 1010
b = 4     # 0100
print(a | b)  # 14 (1110)

3. Bitwise XOR (^) ๐Ÿ”€

Performs a logical exclusive OR on each pair of corresponding bits.

Python

a = 10    # 1010
b = 4     # 0100
print(a ^ b)  # 14 (1110)

4. Bitwise NOT (~) ๐Ÿ”„

Inverts all the bits (unary operator). Note that this gives the two’s complement.

Python

a = 10    # 1010
print(~a)     # -11 (inverts bits and adds 1 for two's complement)

5. Left Shift (<<) โฌ…๏ธ

Shifts bits to the left, filling with 0s on the right.

Python

a = 10    # 1010
print(a << 1)  # 20 (10100)
print(a << 2)  # 40 (101000)

6. Right Shift (>>) โžก๏ธ

Shifts bits to the right, filling with 0s on the left (for positive numbers).

Python

a = 10    # 1010
print(a >> 1)  # 5 (0101)
print(a >> 2)  # 2 (0010)

Practical Examples ๐Ÿ’ก

  • Check if a number is even or odd:Pythonnum = 15 if num & 1: print("Odd") else: print("Even") โœ…
  • Swap two numbers without temporary variable:Pythona = 5 b = 7 a = a ^ b b = a ^ b a = a ^ b print(a, b) # 7 5 ๐Ÿ”„
  • Check if two numbers have opposite signs:Pythonx = 10 y = -5 if (x ^ y) < 0: print("Opposite signs") else: print("Same sign") โ†”๏ธ
  • Multiply/Divide by powers of 2:Pythonnum = 20 print(num << 1) # Multiply by 2 (40) print(num >> 1) # Divide by 2 (10) โœ–๏ธโž—

Important Notes ๐Ÿ“Œ

  • Bitwise operators work on integers only. ๐Ÿ”ข
  • The results depend on how numbers are represented in binary (two’s complement for negative numbers). ๐Ÿ’ป
  • Left shifting is equivalent to multiplying by 2n. ๐Ÿ“ˆ
  • Right shifting is equivalent to integer division by 2n. ๐Ÿ“‰
  • Bitwise operations are generally faster than arithmetic operations. โšก

Bitwise operators are commonly used in:

  • Low-level programming ๐Ÿ–ฅ๏ธ
  • Embedded systems ๐Ÿค–
  • Cryptography ๐Ÿ”
  • Compression algorithms ๐Ÿค
  • Network protocols ๐ŸŒ
  • Performance-critical code sections ๐Ÿš€

Chaining Comparisons in Python ๐Ÿ”—โš–๏ธ

Python allows you to chain multiple comparison operations in a single expression, making your code more concise and readable. This feature is sometimes called “comparison operator chaining” or “range comparisons.” ๐Ÿ“


How Chained Comparisons Work ๐Ÿค”

When you chain comparisons, Python automatically combines them with logical and operators. The expression a < b < c is equivalent to a < b and b < c, but more efficient because b is only evaluated once. โšก

Basic Syntax:

Python

x < y < z

This is equivalent to:

Python

x < y and y < z

Examples ๐Ÿ’ก

Numeric Range Checking ๐Ÿ”ข

Python

age = 25
# Traditional way
if 18 <= age and age <= 65:
    print("Eligible")

# With chained comparisons
if 18 <= age <= 65:
    print("Eligible") # Output: Eligible

Multiple Comparisons ๐Ÿงฉ

Python

x = 5
# Check if x is between 1 and 10 but not 7
if 1 <= x <= 10 and x != 7:
    print("Valid number") # Output: Valid number

# Can be written as (though less readable and subtly different if x is modified within an expression):
# if 1 <= x != 7 <= 10:
#     print("Valid number") # Works but less readable

String Comparisons ๐Ÿ’ฌ

Python

name = "Bob"
if "A" <= name <= "M":
    print("Name is in first half of alphabet") # Output: Name is in first half of alphabet

Combining Different Operators ๐Ÿ”„

Python

temperature = 22.5
if 20 <= temperature <= 25:
    print("Comfortable room temperature") # Output: Comfortable room temperature

Important Notes ๐Ÿ“Œ

  • Evaluation Order: Comparisons are evaluated from left to right. โžก๏ธPythona < b < c # Evaluates as (a < b) and (b < c)
  • Short-Circuiting: Like regular boolean expressions, chained comparisons short-circuit. โšกPython# If the first comparison fails, the second isn't evaluated result = 1 > 2 > some_function() # some_function() never gets called if 1 > 2 is False
  • All Operators Don’t Need to Be the Same: You can mix and match.Pythonif 1 < x <= 10: pass if a == b == c: pass if x != y != z: pass
  • Performance Benefit: In a < b < c, b is only evaluated once, whereas in a < b and b < c, b might be evaluated twice if a < b is true. ๐Ÿš€

Advanced Examples ๐Ÿ’ก

Multiple Variables ๐Ÿ“Š

Python

a, b, c = 1, 2, 3
if a < b < c:
    print("Increasing sequence") # Output: Increasing sequence

With Functions โš™๏ธ

Python

def is_positive(x):
    return x > 0

if is_positive(5) < is_positive(10):  # Evaluates to (True < True) which is (1 < 1) โ†’ False
    print("This won't print")

In While Loops ๐Ÿ”„

Python

x = 0
while 0 <= x <= 3: # Changed limit for shorter output
    print(x)
    x += 1
# Output:
# 0
# 1
# 2
# 3

Chained comparisons are particularly useful for range checking and making mathematical conditions more readable. They’re a Pythonic way to write clean, expressive conditions. โœ…

Similar Posts

Leave a Reply

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