# What Is a Number?

## Plain English first
Before numbers existed, people counted by pointing at things: one sheep, another sheep, another sheep. Counting was tied to the physical objects.
At some point, humans realized something profound: the "threeness" of three sheep is the same as the "threeness" of three days, three fingers, three rocks. The quantity three is an abstract idea that can be separated from any specific thing being counted.
A number is that abstract idea — a pure quantity, divorced from what is being counted.
## Two kinds of numbers
**Cardinal numbers** answer "how many?" — 5 apples, 12 people, 0 errors. They count the size of a collection.
**Ordinal numbers** answer "which position?" — 1st place, 3rd floor, 7th day. They describe order, not quantity.
The symbol `5` can mean either, depending on context.
## The building blocks: digits
We write numbers using only 10 symbols called **digits**:
```text
0 1 2 3 4 5 6 7 8 9
```
Every number that has ever existed can be written using just these 10 symbols, combined using place value.
## Standard math notation
```text
Counting numbers (natural numbers): 1, 2, 3, 4, 5, ...
Whole numbers (includes zero): 0, 1, 2, 3, 4, 5, ...
Integers (includes negatives): ..., -3, -2, -1, 0, 1, 2, 3, ...
```
The `...` means the sequence continues forever in that direction.
## Verbose Python with descriptive names
```python
def count_items_in_collection(collection_of_items):
"""
Counting means finding the cardinal number of a collection —
how many things are in it.
Each item we encounter increments our running total by one.
"""
running_total = 0
for item in collection_of_items:
running_total = running_total + 1 # one more thing found
return running_total
def make_ordinal_label(position_number):
"""
Ordinal numbers describe position in a sequence: 1st, 2nd, 3rd...
The suffix depends on the last digit (with exceptions for 11th, 12th, 13th).
"""
if 11 <= position_number % 100 <= 13:
suffix = "th"
elif position_number % 10 == 1:
suffix = "st"
elif position_number % 10 == 2:
suffix = "nd"
elif position_number % 10 == 3:
suffix = "rd"
else:
suffix = "th"
return f"{position_number}{suffix}"
# Demonstration
apples = ["apple_1", "apple_2", "apple_3", "apple_4", "apple_5"]
number_of_apples = count_items_in_collection(apples)
print(f"There are {number_of_apples} apples.") # 5 (cardinal)
print(f"The winner finished in {make_ordinal_label(number_of_apples)} place.") # 5th (ordinal)
```
## Why numbers are powerful
Numbers let us communicate quantity exactly. "A few" is vague. "17" is not. Once we have exact numbers, we can compare, add, subtract, and build all of mathematics on top.
## Common confusions
- The **numeral** is the written symbol (`5`). The **number** is the abstract idea (fiveness). The symbol is not the thing.
- **Zero is a number.** Many ancient cultures had no zero. Its invention was a major breakthrough.
- **Counting never ends.** For any number you name, there is always one more. Numbers go on forever.
## See also
- [Where Mathematics Came From](/articles/f070428e-3a70-4645-8139-d2047e4abbc5)
- [Zero — The Number That Changed Everything](/articles/6995c841-40bf-4d34-a787-c459d6084b5d)
- [Base 10 and Place Value](/articles/c92b632e-0356-4d27-9bca-8934e7651133)
- [The Number Line](/articles/257eeafa-b654-40a8-97f5-6be800ad1c8e)
- [Math Foundations — Visual Table of Contents](/articles/d404884f-54fc-4289-b3f1-baaad2bec6b2)