Bird
Raised Fist0
Pythonprogramming~5 mins

String immutability in Python

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction

Strings cannot be changed after they are created. This helps keep data safe and predictable.

When you want to make sure a text value does not change by mistake.
When you share text data between different parts of a program safely.
When you want to use strings as keys in dictionaries or sets.
When you want to avoid bugs caused by changing text unexpectedly.
Syntax
Python
s = "hello"
s[0] = "H"  # This will cause an error

You cannot change a single character in a string directly.

To change text, you create a new string instead.

Examples
You cannot change a character inside a string.
Python
s = "hello"
# Trying to change a character causes error
# s[0] = "H"  # TypeError: 'str' object does not support item assignment
Create a new string by combining parts to 'change' text.
Python
s = "hello"
s = "H" + s[1:]
print(s)  # Output: Hello
Use string methods to create a new string with changes.
Python
s = "hello"
new_s = s.replace('h', 'H')
print(new_s)  # Output: Hello
Sample Program

This program shows that changing a string character directly causes an error. Then it shows how to create a new string with the desired change.

Python
s = "hello"
try:
    s[0] = "H"
except TypeError as e:
    print(f"Error: {e}")

# Correct way to change string
s = "H" + s[1:]
print(s)
OutputSuccess
Important Notes

Strings are like printed words on paper; you cannot erase a letter but you can write a new paper.

Always create a new string if you want to change text.

Summary

Strings cannot be changed after creation.

To change text, make a new string from parts or methods.

This helps keep your program safe and easy to understand.

Practice

(1/5)
1. What does it mean that strings in Python are immutable?
easy
A. Strings are stored as numbers internally.
B. You can change parts of a string directly.
C. Strings can be resized but not changed.
D. You cannot change a string after it is created.

Solution

  1. Step 1: Understand the meaning of immutable

    Immutable means something cannot be changed after it is made.
  2. Step 2: Apply this to strings in Python

    Strings cannot be changed once created; you must make a new string to change text.
  3. Final Answer:

    You cannot change a string after it is created. -> Option D
  4. Quick Check:

    Immutable = cannot change [OK]
Hint: Immutable means no changes allowed after creation [OK]
Common Mistakes:
  • Thinking strings can be changed like lists
  • Confusing immutability with fixed size
  • Believing strings store numbers only
2. Which of the following is the correct way to create a new string by changing the first letter of word = 'hello' to uppercase?
easy
A. word[0] = 'H'
B. word = 'H' + word[1:]
C. word.upper()[0]
D. word.change(0, 'H')

Solution

  1. Step 1: Recognize string immutability

    You cannot assign to a string index like word[0] = 'H'.
  2. Step 2: Create a new string combining parts

    Use slicing and concatenation: 'H' + word[1:] makes a new string with first letter changed.
  3. Final Answer:

    word = 'H' + word[1:] -> Option B
  4. Quick Check:

    Use slicing + concat to change string [OK]
Hint: Use slicing and + to build new strings [OK]
Common Mistakes:
  • Trying to assign directly to string index
  • Using non-existent string methods like change()
  • Misusing upper() which returns full uppercase
3. What will be the output of this code?
text = 'cat'
text[0] = 'b'
print(text)
medium
A. TypeError
B. cat
C. bat
D. SyntaxError

Solution

  1. Step 1: Identify the operation on string index

    Trying to assign text[0] = 'b' attempts to change a character in the string.
  2. Step 2: Recall string immutability rules

    Strings cannot be changed by index assignment; Python raises a TypeError.
  3. Final Answer:

    TypeError -> Option A
  4. Quick Check:

    Index assignment on string = TypeError [OK]
Hint: Assigning to string index causes TypeError [OK]
Common Mistakes:
  • Expecting string to change without error
  • Confusing TypeError with SyntaxError
  • Thinking print shows changed string
4. The code below tries to replace the first character of word with 'J'. What is wrong and how to fix it?
word = 'python'
word[0] = 'J'
print(word)
medium
A. Strings are immutable; fix by creating a new string: word = 'J' + word[1:]
B. Syntax error; fix by adding parentheses around 'J'
C. Use word.replace(0, 'J') to fix
D. No error; code works fine

Solution

  1. Step 1: Identify the error cause

    Assigning to word[0] is invalid because strings cannot be changed by index.
  2. Step 2: Fix by creating a new string

    Build a new string with 'J' plus the rest: word = 'J' + word[1:].
  3. Final Answer:

    Strings are immutable; fix by creating a new string: word = 'J' + word[1:] -> Option A
  4. Quick Check:

    Fix immutability by new string creation [OK]
Hint: Fix by slicing and concatenating new string [OK]
Common Mistakes:
  • Trying to assign directly to string index
  • Using replace() incorrectly for index change
  • Assuming no error occurs
5. Given a string s = 'banana', how can you create a new string where all 'a' characters are replaced by 'o' without modifying s directly?
hard
A. s = s[0] + 'o' + s[2:]
B. s[1] = 'o'
C. s.replace('a', 'o')
D. s.change('a', 'o')

Solution

  1. Step 1: Understand string immutability

    You cannot change characters by index; must create a new string.
  2. Step 2: Use string method to replace characters

    s.replace('a', 'o') returns a new string with all 'a' replaced by 'o'.
  3. Final Answer:

    s.replace('a', 'o') -> Option C
  4. Quick Check:

    Use replace() to get new string with changes [OK]
Hint: Use replace() to get new string with changes [OK]
Common Mistakes:
  • Trying to assign to string index
  • Using non-existent change() method
  • Changing only one character manually