---
title: 4.2 String Indexing
description: "A string is a sequence of characters, and each character occupies a specific position called an **index**. Python allows you to access individual characters of a string using their index values enclosed within square brackets (`[]`). String indexing always starts…"
url: "https://magenta-tarsier-454184.hostingersite.com/docs/python-programming/strings-python/4-2-string-indexing/"
updated: "2026-07-29"
category: Python Programming / Strings
---

# 4.2 String Indexing

A string is a sequence of characters, and each character occupies a specific position called an **index**.

Python allows you to access individual characters of a string using their index values enclosed within square brackets (`[]`).

String indexing always starts from **0**, which means:

- The first character has an index of `0`.
- The second character has an index of `1`.
- The third character has an index of `2`, and so on.

Indexing makes it easy to retrieve a single character from a string without affecting the original string.

---

## Syntax

```
string_name[index]
```

### Components

| Component | Description |
| --- | --- |
| `string_name` | The string variable. |
| `[` `]` | Square brackets used for indexing. |
| `index` | Position of the character (starting from 0). |

---

## Example 1: Accessing the First Character

**main.py**

```
language = "Python"

print(language[0])
```

### Output

```
P
```

### Explanation

- `"Python"` contains six characters.
- The first character `P` is at index `0`.
- `language[0]` returns the first character.

---

## Example 2: Accessing the Second Character

**main.py**

```
language = "Python"

print(language[1])
```

### Output

```
y
```

### Explanation

- Index `1` refers to the second character.
- The character at index `1` is `y`.

---

## Example 3: Accessing the Last Character Using Positive Index

**main.py**

```
language = "Python"

print(language[5])
```

### Output

```
n
```

### Explanation

- The characters of `"Python"` are:

| Index | Character |
| --- | --- |
| 0 | P |
| 1 | y |
| 2 | t |
| 3 | h |
| 4 | o |
| 5 | n |

- The last character has index `5`.
- Therefore, `language[5]` returns `n`.

---

## Example 4: Accessing Characters from a Sentence

**main.py**

```
message = "Hello World"

print(message[0])
print(message[6])
```

### Output

```
H
W
```

### Explanation

- Indexing counts every character, including spaces.
- `H` is located at index `0`.
- The space occupies index `5`.
- Therefore, `W` is located at index `6`.

---

## Example 5: Storing an Indexed Character

**main.py**

```
word = "Computer"

letter = word[3]

print(letter)
```

### Output

```
p
```

### Explanation

- The character at index `3` is retrieved.
- It is stored in the variable `letter`.
- Printing `letter` displays `p`.

---

## Example 6: User Input

**main.py**

```
name = input("Enter your name: ")

print(name[0])
```

### Sample Input

```
Alice
```

### Output

```
A
```

### Explanation

- The user enters a string.
- `name[0]` retrieves the first character of the entered string.
- The first letter of `"Alice"` is `A`.

---

## Example 7: Indexing a Numeric String

**main.py**

```
number = "987654"

print(number[2])
```

### Output

```
7
```

### Explanation

- Although the string contains digits, each digit is treated as a character.
- Index `2` refers to the third character.
- The returned character is `'7'`.

---

## Example 8: Using an Index in an Expression

**main.py**

```
text = "Programming"

print(text[0] + text[1])
```

### Output

```
Pr
```

### Explanation

- `text[0]` returns `P`.
- `text[1]` returns `r`.
- The `+` operator concatenates the two characters.
- The result is `"Pr"`.

---

## Example 9: Checking the Type of an Indexed Character

**main.py**

```
text = "Python"

character = text[2]

print(character)
print(type(character))
```

### Output

```
t
<class 'str'>
```

### Explanation

- An indexed character is still a string.
- Python does not have a separate `char` data type.
- A single character is simply a string of length `1`.

---

## Example 10: Accessing Multiple Characters Individually

**main.py**

```
word = "Python"

print(word[0])
print(word[2])
print(word[4])
```

### Output

```
P
t
o
```

### Explanation

- Index `0` returns `P`.
- Index `2` returns `t`.
- Index `4` returns `o`.
- Each indexed access retrieves one character from the string.

---

# Common Mistakes

### 1. Assuming Indexing Starts from 1

**Incorrect**

```
word = "Python"

print(word[1])
```

### Incorrect Expectation

```
P
```

### Actual Output

```
y
```

**Reason**

Python uses **zero-based indexing**.
The first character is always at index `0`.

**Correct**

```
print(word[0])
```

---

### 2. Accessing an Index That Does Not Exist

**Incorrect**

```
word = "Python"

print(word[10])
```

### Output

```
IndexError: string index out of range
```

**Reason**

The string contains only six characters with indices `0` to `5`.

---

### 3. Using a Floating-Point Index

**Incorrect**

```
word = "Python"

print(word[2.0])
```

### Output

```
TypeError: string indices must be integers
```

**Reason**

String indices must always be integers.

---

### 4. Using an Empty String

**Incorrect**

```
text = ""

print(text[0])
```

### Output

```
IndexError: string index out of range
```

**Reason**

An empty string contains no characters, so there is no valid index.

---

# Best Practices

- Remember that string indexing starts from `0`.
- Verify that an index exists before accessing it.
- Use descriptive variable names for strings.
- Remember that every indexed character is itself a string.
- Use indexing when you need to retrieve a single character from a string.

---

# Key Points to Remember

- Strings are sequences of characters.
- Each character has a unique index.
- Python uses **zero-based indexing**.
- Square brackets (`[]`) are used for indexing.
- Index `0` always refers to the first character.
- Indexing returns a string of length `1`.
- Accessing an invalid index raises an `IndexError`.
