Bird
Raised Fist0
Pythonprogramming~20 mins

String immutability in Python - Practice Problems & Coding Challenges

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
Challenge - 5 Problems
๐ŸŽ–๏ธ
String Immutability Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
โ“ Predict Output
intermediate
2:00remaining
Output of string modification attempt
What is the output of this Python code?
Python
s = "hello"
s[0] = 'H'
print(s)
ATypeError
BHello
Chello
DSyntaxError
Attempts:
2 left
๐Ÿ’ก Hint
Remember that strings cannot be changed by assigning to an index.
โ“ Predict Output
intermediate
2:00remaining
Result of string concatenation
What is the output of this code?
Python
s = "cat"
s = s + "s"
print(s)
Acat
Bcats
CTypeError
Dcatss
Attempts:
2 left
๐Ÿ’ก Hint
Concatenation creates a new string.
โ“ Predict Output
advanced
2:00remaining
Output after string replace method
What is printed by this code?
Python
s = "banana"
s.replace('a', 'o')
print(s)
Abanana
Bbonono
CSyntaxError
DTypeError
Attempts:
2 left
๐Ÿ’ก Hint
Does the replace method change the original string?
โ“ Predict Output
advanced
2:00remaining
Value of string after slicing and concatenation
What is the output of this code?
Python
s = "python"
s = 'J' + s[1:]
print(s)
AnohtyJ
Bpython
CJython
DTypeError
Attempts:
2 left
๐Ÿ’ก Hint
Slicing creates a new string; concatenation creates a new string.
โ“ Predict Output
expert
2:00remaining
Final string value after chained operations
What is the output of this code?
Python
s = "immutable"
s1 = s.upper()
s2 = s1.replace('A', '@')
s3 = s2.lower()
print(s3)
Aelb@tummi
Bimmutable
CIMMUT@BLE
Dimmut@ble
Attempts:
2 left
๐Ÿ’ก Hint
Check the order of operations and what each method returns.

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