Bird
Raised Fist0
Pythonprogramming~10 mins

String indexing (positive and negative) in Python - Step-by-Step Execution

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
Concept Flow - String indexing (positive and negative)
Start with string
Index with positive number
Get character at that position
Index with negative number
Get character from end
Use character or error if out of range
We start with a string, then use positive or negative numbers to get characters by position. Positive counts from start, negative from end.
Execution Sample
Python
s = "hello"
print(s[1])
print(s[-1])
This code prints the second character and the last character of the string "hello".
Execution Table
StepExpressionIndex UsedCharacter RetrievedExplanation
1s = "hello"--String 'hello' is stored in variable s
2s[1]1eIndex 1 gets second character 'e' (counting from 0)
3s[-1]-1oIndex -1 gets last character 'o' (counting from end)
💡 All indexes are valid; program ends after printing characters.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3
sundefined"hello""hello""hello"
Key Moments - 3 Insights
Why does s[1] give 'e' and not 'h'?
Because string indexing starts at 0, s[0] is 'h', so s[1] is the next character 'e' as shown in execution_table row 2.
What does a negative index like s[-1] mean?
Negative indexes count from the end of the string. s[-1] is the last character 'o', as shown in execution_table row 3.
What happens if the index is out of range?
Python will give an error. This example does not show that, but if you try s[10] on 'hello', it will cause an IndexError.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what character does s[1] retrieve?
A"h"
B"e"
C"l"
D"o"
💡 Hint
Check execution_table row 2 under 'Character Retrieved'
At which step does the program get the last character of the string?
AStep 3
BStep 2
CStep 1
DNo step gets the last character
💡 Hint
Look at execution_table row 3 where index -1 is used
If we change s[-1] to s[-2], what character would be retrieved?
A"o"
B"e"
C"l"
D"h"
💡 Hint
Negative index -2 means second last character; check variable s value in variable_tracker
Concept Snapshot
String indexing lets you get characters by position.
Positive index: 0 is first character.
Negative index: -1 is last character.
Example: s = "hello"; s[1] = 'e', s[-1] = 'o'.
Out of range index causes error.
Full Transcript
We start with a string variable s holding 'hello'. Using s[1] gets the second character 'e' because counting starts at zero. Using s[-1] gets the last character 'o' because negative indexes count from the end. If you try an index outside the string length, Python will give an error. This example shows how positive and negative indexing works step by step.

Practice

(1/5)
1.

What does the index 0 represent in the string "hello"?

easy
A. The last letter 'o'
B. The middle letter 'l'
C. The first letter 'h'
D. An error because indexing starts at 1

Solution

  1. Step 1: Understand positive indexing

    In Python, string indexes start at 0 for the first character.
  2. Step 2: Apply to the string "hello"

    The character at index 0 is the first letter 'h'.
  3. Final Answer:

    The first letter 'h' -> Option C
  4. Quick Check:

    Index 0 = first letter 'h' [OK]
Hint: Index 0 always means the first letter [OK]
Common Mistakes:
  • Thinking indexing starts at 1
  • Confusing index 0 with last letter
  • Assuming negative indexes start at 0
2.

Which of the following is the correct way to get the last character of a string s in Python?

easy
A. s[1]
B. s[-1]
C. s[0]
D. s[len(s)]

Solution

  1. Step 1: Recall negative indexing

    Negative index -1 refers to the last character in a string.
  2. Step 2: Check each option

    s[1] is second character, s[0] is first, s[len(s)] causes error (index out of range).
  3. Final Answer:

    s[-1] -> Option B
  4. Quick Check:

    Last char = s[-1] [OK]
Hint: Use -1 to get last character quickly [OK]
Common Mistakes:
  • Using s[len(s)] causes IndexError
  • Confusing s[1] as last character
  • Forgetting negative indexes start at -1
3.

What is the output of this code?

word = "python"
print(word[2], word[-3])

medium
A. t h
B. t o
C. t t
D. h n

Solution

  1. Step 1: Find character at index 2

    Index 0='p', 1='y', 2='t'. So word[2] = 't'.
  2. Step 2: Find character at index -3

    Negative indexes count from end: -1='n', -2='o', -3='h'. So word[-3] = 'h'.
  3. Final Answer:

    t h -> Option A
  4. Quick Check:

    word[2] = 't', word[-3] = 'h' [OK]
Hint: Count from start with positive, from end with negative [OK]
Common Mistakes:
  • Mixing positive and negative indexes
  • Counting negative indexes starting at 0
  • Confusing letters at indexes 2 and -3
4.

Find the error in this code snippet:

text = "example"
print(text[-0])

medium
A. No error, prints 'e' (same as text[0])
B. SyntaxError due to invalid index
C. IndexError because -0 is out of range
D. IndexError: -0 is invalid

Solution

  1. Step 1: Understand -0 as index

    In Python, -0 is the same as 0, so text[-0] equals text[0].
  2. Step 2: Check output

    text[0] is 'e', the first letter, so it prints 'e' without error.
  3. Final Answer:

    No error, prints 'e' (same as text[0]) -> Option A
  4. Quick Check:

    -0 = 0 index, prints first letter 'e' [OK]
Hint: -0 equals 0, so no error and prints first letter [OK]
Common Mistakes:
  • Thinking -0 is invalid index
  • Expecting IndexError for -0
  • Confusing negative zero with positive zero
5.

Given the string s = "programming", which expression returns the substring "ing" using only negative indexes?

hard
A. s[-3:-0]
B. s[-4:-1]
C. s[-3:-1]
D. s[-3:]

Solution

  1. Step 1: Understand slicing with negative indexes

    s[-3:] means start at third last character to end.
  2. Step 2: Apply to "programming"

    Third last character is 'i', so s[-3:] = 'ing'. Other options exclude last character or cause empty slice.
  3. Final Answer:

    s[-3:] -> Option D
  4. Quick Check:

    Negative slice from -3 to end = 'ing' [OK]
Hint: Use s[-3:] to get last 3 letters easily [OK]
Common Mistakes:
  • Using s[-3:-1] misses last letter
  • Using s[-4:-1] gives 'min' not 'ing'
  • Using s[-3:-0] is invalid slice