Bird
Raised Fist0
Pythonprogramming~10 mins

String immutability in Python - Interactive Code Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to create a new string by replacing the first character.

Python
text = "hello"
new_text = [1] + text[1:]
print(new_text)
Drag options to blanks, or click blank then click option'
A"j"
Bj
C'j'
D"hello"
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using a character without quotes causes an error.
Trying to assign directly to a string index.
2fill in blank
medium

Complete the code to show that strings cannot be changed by assignment.

Python
text = "hello"
try:
    text[0] = [1]
except TypeError:
    print("Cannot change string characters directly")
Drag options to blanks, or click blank then click option'
A'j'
B"j"
Cj
D"hello"
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using an unquoted character causes a NameError.
Trying to assign to string index without quotes.
3fill in blank
hard

Fix the error in the code that tries to change a string character.

Python
word = "world"
word = [1] + word[1:]
print(word)
Drag options to blanks, or click blank then click option'
A"W"
B'W'
CW
D"world"
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using an unquoted character causes an error.
Trying to assign directly to string index.
4fill in blank
hard

Fill both blanks to create a new string with the last character replaced.

Python
word = "python"
new_word = word[:[1]] + [2]
print(new_word)
Drag options to blanks, or click blank then click option'
A-1
B"!"
C5
D'!'
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using 6 as slice index includes the last character.
Using unquoted character causes error.
5fill in blank
hard

Fill all three blanks to replace the middle character in a string.

Python
word = "apple"
new_word = word[:[1]] + [2] + word[[3]:]
print(new_word)
Drag options to blanks, or click blank then click option'
A2
B"i"
C3
D'i'
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using wrong slice indexes.
Using unquoted replacement character.

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