Type conversion changes a value from one type to another, such as text from input() into an integer before doing math.
Some conversions happen automatically, but important beginner code should convert explicitly so the intent is visible.
Good conversion code also handles invalid values, because real user input does not always match the type your program expects.
Type conversion (also called type casting) is the process of converting a value from one data type to another. Python supports two kinds: implicit and explicit.
Python automatically converts types when it's safe to do so - no data is lost. This usually happens when mixing int and float.
x = 5 # int
y = 2.5 # float
result = x + y
print(result) # 7.5
print(type(result)) # <class 'float'> - Python promoted int to float
# bool is a subclass of int
print(True + 1) # 2
print(False + 5) # 5
print(True * 10) # 10
You manually convert using built-in functions. This is called explicit conversion or type casting.
| Function | Converts To | Example |
|---|---|---|
| int(x) | Integer | int("42") -> 42 |
| float(x) | Float | float("3.14") -> 3.14 |
| str(x) | String | str(100) -> "100" |
| bool(x) | Boolean | bool(0) -> False |
| list(x) | List | list("abc") -> ['a','b','c'] |
| tuple(x) | Tuple | tuple([1,2,3]) -> (1,2,3) |
| set(x) | Set | set([1,2,2,3]) -> {1,2,3} |
| dict(x) | Dictionary | dict(a=1, b=2) |
| complex(r, i) | Complex | complex(2, 3) -> (2+3j) |
| ord(c) | Integer (Unicode) | ord('A') -> 65 |
| chr(n) | Character | chr(65) -> 'A' |
| hex(n) | Hex string | hex(255) -> '0xff' |
| oct(n) | Octal string | oct(8) -> '0o10' |
| bin(n) | Binary string | bin(10) -> '0b1010' |
# Numeric conversions
print(int(3.9))
print(int("42"))
print(int("0b1010", 2))
print(float("3.14"))
# Falsy and truthy values
print(bool(0))
print(bool(""))
print(bool([]))
print(bool(None))
print(bool(1))
print(bool("hi"))
# Collection conversions
print(list("Python"))
print(tuple([1, 2, 3]))
print(set([1, 2, 2, 3, 3]))
print(ord("A"))
print(chr(65))
# int() truncates, doesn't round
print(int(9.9)) # 9 (not 10!)
print(int(-3.7)) # -3 (not -4!)
# Use round() if you need rounding
print(round(9.9)) # 10
print(round(3.567, 2)) # 3.57
# ValueError - invalid conversion
try:
x = int("hello")
except ValueError as e:
print(f"Error: {e}") # invalid literal for int()
# Safe conversion pattern
def safe_int(value, default=0):
try:
return int(value)
except (ValueError, TypeError):
return default
print(safe_int("42")) # 42
print(safe_int("abc")) # 0
print(safe_int(None)) # 0
# User input is always a string - always convert!
age_str = input("Enter age: ") # returns str
age = int(age_str) # convert to int
0 of 2 checked
Try this next
0 of 3 completed
input() returns text. If the program needs math, convert the text with int() or float() after checking that the value is valid.
Python raises ValueError, such as int("abc"). Handle it with validation or a focused try except block.
No. Convert at the boundary where data enters the program, then keep the value in the type the program needs.
Explore 500+ free tutorials across 20+ languages and frameworks.