Python Data Types Overview
Python has different data types for different kinds of values.
This beginner-friendly overview explains what data types are, why they matter, and how to recognize the most common built-in types. You do not need to memorize everything at once. The goal is to understand the basic idea and know which types you will use most often.
Quick way to check a type #
Use type() to quickly check what kind of value you are working with.
x = 10
print(type(x))
y = "hello"
print(type(y))
z = [1, 2, 3]
print(type(z))
Expected output:
<class 'int'>
<class 'str'>
<class 'list'>
This is a useful first step when a program is not behaving the way you expect.
What this page covers #
- Explain what a data type is
- Show the main built-in Python data types beginners use first
- Help you choose the right type for simple tasks
- Keep details light and point you to focused pages for each type
What a data type means #
A data type tells Python what kind of value something is.
For example:
10is a number"hello"is text[1, 2, 3]is a collection of values
The type matters because it affects what you can do with the value.
- You can add numbers
- You can join strings
- You can store many items in a list
Using the right type helps you write correct code and avoid common errors.
Why data types matter #
Different types behave differently.
For example, this works because both values are numbers:
print(2 + 3)
Output:
5
But this does something different because both values are strings:
print("2" + "3")
Output:
23
And this causes an error because Python does not automatically combine a string and an integer in this way:
print("2" + 3)
This raises a TypeError.
Knowing the type of a value helps you:
- understand what operations are allowed
- use functions correctly
- debug problems faster
If you are new to variables, see Python variables explained for beginners.
Main simple data types #
These are the first built-in types most beginners use.
int #
An int is a whole number.
Examples:
120-5
age = 25
count = 10
print(age)
print(type(count))
float #
A float is a number with a decimal point.
Examples:
3.140.5-2.75
price = 19.99
temperature = -0.5
print(price)
print(type(temperature))
For a focused guide, read Python numbers explained: int and float.
str #
A str is a text value.
Strings go inside quotes:
"hello"'Python'"123"
name = "Ava"
message = "Hello"
print(name)
print(type(message))
Even if a string looks like a number, it is still text:
value = "123"
print(type(value))
To learn more, see Python strings explained: basics and examples.
bool #
A bool has only two possible values:
TrueFalse
Booleans are often used in comparisons and conditions.
is_logged_in = True
is_admin = False
print(is_logged_in)
print(type(is_admin))
For more detail, see Python booleans explained: True and False.
Main collection data types #
Collection types store multiple values.
list #
A list is an ordered, changeable collection.
numbers = [1, 2, 3]
numbers.append(4)
print(numbers)
Output:
[1, 2, 3, 4]
Lists are useful when:
- order matters
- you want to add, remove, or change items
See Python lists explained for beginners.
tuple #
A tuple is ordered, but it is not usually changed after creation.
point = (10, 20)
print(point)
print(type(point))
Use tuples when you want a fixed group of values.
set #
A set is an unordered collection of unique values.
items = {1, 2, 2, 3}
print(items)
Possible output:
{1, 2, 3}
Sets are useful when duplicates should be removed.
dict #
A dict stores key-value pairs.
student = {
"name": "Mia",
"age": 14
}
print(student["name"])
Output:
Mia
Dictionaries are useful when you want to look up values by a name or key. See Python dictionaries explained.
How to check a value’s type #
Use type(value) to inspect a value.
print(type(10))
print(type(3.14))
print(type("hello"))
print(type([1, 2, 3]))
This is especially useful when:
- input data is unclear
- you are reading data from a file
- an error suggests the wrong type is being used
You can also use isinstance() when you want to check whether a value is a specific type:
value = "hello"
print(isinstance(value, str))
print(isinstance(value, int))
Output:
True
False
For more detail, see Python type() function explained.
Choosing the right type #
Use these simple rules as a starting point:
- Use
intfor counting and whole-number values - Use
floatfor decimal values - Use
strfor names, messages, and text input - Use
listfor ordered groups you need to change - Use
dictwhen values should be looked up by key - Use
setwhen you want unique values only
Examples:
count = 5 # int
price = 8.99 # float
username = "sam" # str
scores = [80, 90, 75] # list
user = {"name": "Sam"} # dict
tags = {"python", "code"} # set
If you are unsure, ask:
- Is this a number or text?
- Do I need one value or many values?
- Does order matter?
- Do I need to change it later?
- Do I need names for each value?
Type conversion basics #
Python can convert values from one type to another with functions such as:
int()float()str()
Example:
text_number = "42"
number = int(text_number)
print(number)
print(type(number))
Output:
42
<class 'int'>
This is very common when working with user input, because input() returns a string by default.
age_text = input("Enter your age: ")
age = int(age_text)
print(age + 1)
Be careful: not every string can be converted to a number.
value = "hello"
number = int(value)
This raises a ValueError.
If you want to practice this next, read type conversion in Python or how to convert string to int in Python.
Common beginner confusion #
Here are some common things that confuse new Python learners.
- Numbers in quotes are strings, not
intorfloat input()returns a string by defaultTrueandFalseare booleans, not strings- Lists, tuples, sets, and dictionaries all store groups of values, but they behave differently
Example:
a = "5"
b = 5
print(type(a))
print(type(b))
Output:
<class 'str'>
<class 'int'>
Common mistakes #
These problems often happen when learning data types:
- Treating user input as a number without converting it
- Putting numbers in quotes and expecting math to work
- Using the wrong collection type for the task
- Confusing list, tuple, set, and dictionary behavior
- Trying to combine values of different types directly
Helpful debugging steps:
print(type(value))
print(value)
print(repr(value))
print(isinstance(value, int))
print(isinstance(value, str))
What these do:
print(type(value))shows the typeprint(value)shows the normal outputprint(repr(value))shows a more exact representation, which is useful for spotting quotes and special charactersisinstance(value, int)checks whether the value is an integerisinstance(value, str)checks whether the value is a string
If you run into conversion problems, these pages may help:
- TypeError: can only concatenate str not int to str
- ValueError: invalid literal for int() with base 10
Good next steps #
After this overview, the best next step is to learn one type at a time.
A good order is:
- Strings
- Numbers
- Lists
- Type conversion
That gives you the basics needed for most beginner Python programs.
✍️ Try it yourself
Create one value of each of these four types: an int, a float, a str, and a bool. Print the result of type() for each one.
Show answer
count = 7 # int
price = 3.5 # float
name = "Ada" # str
is_ready = True # bool
print(type(count))
print(type(price))
print(type(name))
print(type(is_ready))
# Output:
# <class 'int'>
# <class 'float'>
# <class 'str'>
# <class 'bool'>
FAQ #
What is a data type in Python? #
A data type is the kind of value a variable holds, such as a number, string, list, or dictionary.
How do I check a data type in Python? #
Use the type() function, such as type(10) or type("hello").
What are the main Python data types for beginners? #
The most important ones are int, float, str, bool, list, tuple, set, and dict.
Is input() a number in Python? #
No. input() returns a string unless you convert it with int() or float().
What is the difference between list and tuple? #
A list can be changed after creation. A tuple cannot be changed in the usual way.