Bird
Raised Fist0
Pythonprogramming~5 mins

String indexing (positive and negative) 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

String indexing helps you pick out single letters from a word or sentence. You can count from the start or the end.

When you want to get the first letter of a name.
When you need the last character of a password to check it.
When you want to read a specific letter in a sentence.
When you want to reverse a string by using negative indexes.
When you want to slice parts of a string using positions.
Syntax
Python
string[index]

# index can be positive (start at 0) or negative (start at -1 from end)

Positive index starts at 0 for the first character.

Negative index starts at -1 for the last character.

Examples
Positive indexes: 0 is first letter, 4 is last letter in 'hello'.
Python
word = "hello"
print(word[0])  # prints 'h'
print(word[4])  # prints 'o'
Negative indexes: -1 is last letter, -5 is first letter in 'hello'.
Python
word = "hello"
print(word[-1])  # prints 'o'
print(word[-5])  # prints 'h'
Mixing positive and negative indexes to get letters from middle.
Python
sentence = "Python"
print(sentence[2])   # prints 't'
print(sentence[-3])  # prints 'h'
Sample Program

This program shows how to get letters from a word using positive and negative indexes.

Python
word = "friend"

first_letter = word[0]
last_letter = word[-1]
third_letter = word[2]
second_last_letter = word[-2]

print(f"First letter: {first_letter}")
print(f"Last letter: {last_letter}")
print(f"Third letter: {third_letter}")
print(f"Second last letter: {second_last_letter}")
OutputSuccess
Important Notes

Trying to use an index outside the string length will cause an error.

Strings are like a row of boxes, each box has one letter and a number (index).

Summary

Use positive indexes to count letters from the start (0, 1, 2...).

Use negative indexes to count letters from the end (-1, -2, -3...).

String indexing helps you pick any single letter easily.

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