Kiểu dữ liệu Number trong Python là một phần cốt lõi, đóng vai trò quan trọng trong việc xử lý các phép toán và tính toán. Kiểu dữ liệu này bao gồm nhiều loại khác nhau, phục vụ cho các mục đích sử dụng đa dạng. Bài viết này sẽ giới thiệu một phần về các dạng số phổ biến, cách chúng hoạt động, cũng như một số thao tác cơ bản.
Các điểm chính
Khi đọc xong bài viết, bạn sẽ:
- Hiểu Rõ Tổng Quan: Nắm vững khái niệm kiểu dữ liệu number trong Python và vai trò của nó trong lập trình.
- Phân Loại & Sử Dụng: Phân biệt và sử dụng thành thạo các kiểu dữ liệu số khác nhau trong Python, bao gồm số nguyên (int), số thực (float), số phức (complex), và các biểu diễn số như nhị phân, bát phân, hexa.
- Chuyển Đổi & Xử Lý: Biết cách chuyển đổi giữa các kiểu số khác nhau và sử dụng các hàm toán học tích hợp sẵn trong Python để xử lý số liệu.
- Khai Phá Module math: Làm quen và sử dụng được các hàm toán học, lũy thừa, logarit, lượng giác, hyperbolic và các hằng số toán học trong module math của Python.
Kiểu dữ liệu number trong Python là gì?
Kiểu dữ liệu number trong Python là một nhóm các kiểu dữ liệu được thiết kế để lưu trữ và xử lý các giá trị số. Python cung cấp khả năng hỗ trợ mạnh mẽ cho việc làm việc với số, và bạn sẽ thấy kiểu dữ liệu này xuất hiện trong hầu hết mọi chương trình Python, bởi vì gần như bất kỳ ứng dụng máy tính nào cũng cần đến các thao tác với con số. Nói một cách khác, đây là một trong những kiểu dữ liệu cơ bản và quan trọng nhất trong Python.

Các kiểu dữ liệu number trong Python
Có ba kiểu number được tích hợp sẵn trong Python:
- Số nguyên (integers – int)
- Số thực (floating point number – float)
- Số phức (complex number)
Ngoài ra, Python có kiểu dữ liệu boolean (bool) tích hợp. Kiểu dữ liệu bool có thể được coi là một kiểu con của kiểu int, vì hai giá trị True
và False
của bool tương ứng với số nguyên 1 và 0.
Số nguyên trong Python
Trong Python, một số nguyên là bất kỳ số nào không có phần thập phân. (Lưu ý rằng nếu phần thập phân của một số là 0, điều này không có nghĩa đó là số nguyên. Ví dụ, số 10.0 không phải là số nguyên, đó là một số thực với phần thập phân là 0, có giá trị số là 10). Một số nguyên có thể là không, là một số nguyên dương hoặc số nguyên âm. Ví dụ: 1234, 0, -55 đều là các số nguyên trong Python.
Có ba cách để tạo một đối tượng số nguyên: (a
) biểu diễn trực tiếp bằng ký tự (literal), (b
) từ một biểu thức trả về kết quả là số nguyên, và (c
) sử dụng hàm int()
.
Ký tự (literal) là cách biểu diễn trực tiếp một giá trị hằng số trong mã nguồn. Ví dụ:
a = 10
Tuy nhiên, hãy xem xét ví dụ về phép gán giá trị cho biến số nguyên c
sau đây:
a = 10
b = 20
c = a + b
print ("a:", a, "type:", type(a))
print ("c:", c, "type:", type(c))
Kết quả là:
a: 10 type:
c: 30 type:
Giải thích code:
a = 10, b = 20
: Hai dòng này khai báo và gán giá trị cho hai biếna
vàb
. Ở đây,10
và20
là các integer literals (biểu diễn trực tiếp của số nguyên).c = a + b
: Dòng này tính tổng củaa
vàb
, sau đó gán kết quả cho biếnc
.print(...)
: xuất ra giá trịa
vàc
kèm vớitype
Trong ví dụ này, c
là một biến số nguyên, nhưng biểu thức a + b
được tính toán trước, và giá trị của biểu thức này được gán cho c
.
Cách thứ ba để tạo một đối tượng số nguyên là sử dụng giá trị trả về của hàm int()
. Hàm này có thể chuyển đổi một số thực (floating-point number) hoặc một chuỗi (string) thành một số nguyên. Ví dụ:
# Chuyển đổi số thực thành số nguyên
so_thuc = 9.75
so_nguyen = int(so_thuc)
print("Số nguyên sau khi chuyển đổi:", so_nguyen) # Kết quả: 9
# Chuyển đổi chuỗi thành số nguyên
chuoi_so = "123"
so_nguyen_tu_chuoi = int(chuoi_so)
print("Số nguyên từ chuỗi:", so_nguyen_tu_chuoi) # Kết quả: 123
# Nếu chuổi không thể chuyển sang dạng số nguyên
chuoi = "mot tram"
#so_nguyen_tu_chuoi = int(chuoi) => Sẽ phát sinh lỗi
Bạn có thể biểu diễn một số nguyên dưới dạng số nhị phân, bát phân hoặc thập lục phân. Tuy nhiên, bên trong bộ nhớ máy tính, đối tượng số nguyên vẫn được lưu trữ dưới dạng số nguyên (thập phân).
Số nhị phân trong Python
Số nhị phân là một số chỉ bao gồm các chữ số nhị phân (1 và 0), và được bắt đầu bằng tiền tố “0b
“. Khi bạn gán một số nhị phân cho một biến, biến đó vẫn là một biến kiểu int (số nguyên).
Để biểu diễn một số nguyên ở dạng nhị phân, bạn có thể lưu trữ trực tiếp dưới dạng một literal (giá trị cố định), hoặc sử dụng hàm int()
, trong đó cơ số (base) được đặt là 2. Ví dụ:
a = 0b101
print("a:", a, "type:", type(a))
b = int("0b101011", 2)
print("b:", b, "type:", type(b))
Kết quả khi chạy đoạn code trên:
a: 5 type:
b: 43 type:
Python cũng có một hàm là bin()
. Hàm này trả về một chuỗi nhị phân tương đương của một số nguyên. Ví dụ:
tuoi = 25
tuoi_nhi_phan = bin(tuoi)
print("Tuổi:", tuoi, "Tuổi dạng nhị phân:", tuoi_nhi_phan)
Kết quả:
Tuổi: 25 Tuổi dạng nhị phân: 0b11001
Số bát phân trong Python
Một số bát phân được tạo thành từ các chữ số từ 0 đến 7. Để chỉ định rằng một số nguyên sử dụng ký hiệu bát phân, số nguyên đó cần có tiền tố là “0o
” (chữ “o” thường) hoặc “0O
” (chữ “O” hoa). Ví dụ:
a = 0o107
print(a, type(a))
Kết quả:
71 <class ‘int’>
Hệ bát phân có 8 ký hiệu (từ 0 đến 7), do đó cơ số của hệ bát phân là 8. Vì vậy, khi sử dụng hàm int()
để chuyển đổi một chuỗi bát phân thành số nguyên, bạn cần đặt tham số base thành 8. Ví dụ:
a = int('20', 8) # Chuyển đổi chuỗi '20' ở hệ cơ số 8
print(a, type(a))
Kết quả:
16 <class ‘int’>
Trong đoạn code sau, hai đối tượng int (số nguyên) được tạo ra từ ký hiệu bát phân và thực hiện phép cộng trên chúng.
a = 0o56 # Sử dụng 0o (hoặc 0O) để biểu diễn số bát phân
print("a:", a, "type:", type(a))
b = int("0o31", 8) #Chuyển đổi chuỗi "0O31" (hệ bát phân) thành số nguyên
print("b:", b, "type:", type(b))
c = a + b
print("Phép cộng:", c)
Khi thực hiện, chương trình sẽ đưa ra kết quả sau:
a: 46 type: <class ‘int’>
b: 25 type: <class ‘int’>
Phép cộng: 71
Để có được biểu diễn bát phân của một số nguyên, sử dụng hàm oct()
.
x = oct(71) # Đổi 71 thành chuỗi biểu diễn dạng bát phân.
print(x, type(x))
Số Hexadecimal trong Python
Đúng như tên gọi, hệ thập lục phân (Hexadecimal) sử dụng 16 ký hiệu để biểu diễn số. Các ký hiệu này bao gồm 0-9 và A đến F. Mười chữ số đầu tiên (0-9) giống như trong hệ thập phân (hệ đếm quen thuộc chúng ta sử dụng hàng ngày). Các chữ cái A, B, C, D, E và F lần lượt tương ứng với các giá trị 10, 11, 12, 13, 14 và 15. Bạn có thể dùng chữ hoa hoặc chữ thường cho các ký tự này (ví dụ: ‘A’ và ‘a’ đều biểu diễn cho 10).
Để biểu diễn một số nguyên theo dạng Hexadecimal, hãy thêm tiền tố “0x
” hoặc “0X
” vào trước giá trị đó. Ví dụ:
a = 0xA2 # Hoặc a = 0Xa2
print(a, type(a))
Kết quả:
162 <class ‘int’>
Để chuyển đổi một chuỗi biểu diễn số hexa sang số nguyên, hãy đặt tham số base (cơ số) thành 16 trong hàm int()
. Ví dụ:
chuoi_ma_mau = "FF0000" # Màu đỏ trong hệ RGB (Red-Green-Blue)
gia_tri_do = int(chuoi_ma_mau, 16) # Đối số thứ 2 là base thể hiện số hexa.
print("Mã màu Hexa:", chuoi_ma_mau, "- Giá trị:", gia_tri_do)
Kết quả:
Mã màu Hexa: FF0000 – Giá trị: 16711680
Tuy nhiên, nếu chuỗi chứa bất kỳ ký hiệu nào không nằm trong bảng ký hiệu hexa (0-9 và A-F), lỗi sẽ phát sinh. Ví dụ về lỗi:
chuoi_khong_hop_le = "A1Z" # 'Z' không phải là ký tự hexa hợp lệ
print(int(chuoi_khong_hop_le, 16))
Chương trình trên sẽ báo lỗi:
Traceback (most recent call last):
File “/home/main.py”, line 2, in
print (int(chuoi_khong_hop_le, 16))
ValueError: invalid literal for int() with base 16: ‘A1Z’
Thư viện chuẩn của Python có hàm hex()
, với hàm này bạn có thể thu được một chuỗi biểu diễn dạng hexa tương đương của một số nguyên. Ví dụ:
so_luong = 255
dang_hexa = hex(so_luong)
print(dang_hexa, type(dang_hexa))
Kết quả:
0xff <class ‘str’>
Mặc dù một số nguyên có thể được biểu diễn dưới dạng nhị phân (binary), bát phân (octal), hoặc thập lục phân (hexadecimal), bản chất bên trong số đó vẫn là một số nguyên. Vì vậy, khi thực hiện các phép toán số học, cách biểu diễn (hệ cơ số) không quan trọng. Ví dụ phép cộng với nhiều hệ số:
a = 10 # Hệ thập phân (decimal)
b = 0b1010 # Hệ nhị phân (binary) - tương đương 10
c = 0o12 # Hệ bát phân (octal) - tương đương 10
d = 0xA # Hệ thập lục phân (hexadecimal) - tương đương 10
ket_qua = a + b + c + d
print("Kết quả phép cộng:", ket_qua)
Kết quả:
Kết quả phép cộng: 40
Floating Point Numbers trong Python
Floating Point Number trong Python là các số có phần nguyên và phần thập phân, được phân tách bởi dấu chấm (.
). Theo mặc định, một số Floating Point Number sẽ là số dương, để biểu diễn số âm, ta thêm tiền tố dấu gạch ngang (-
) vào trước số đó.
Một số Floating Point Number là một đối tượng của lớp float trong Python. Để lưu trữ một đối tượng float, bạn có thể sử dụng ký hiệu trực tiếp (literal notation), sử dụng giá trị của một biểu thức số học, hoặc sử dụng giá trị trả về của hàm float()
.
Cách trực tiếp nhất là sử dụng literal. Chỉ cần gán một số có phần thập phân cho một biến. Mỗi câu lệnh sau đây đều khai báo một đối tượng float:
a = 9.99
b = 0.999
c = -9.99
d = -0.999
Giải thích code:
- Các biến
a
,b
,c
, vàd
được gán các giá trị Floating Point Numbers khác nhau. - Dấu chấm
(.)
phân tách phần nguyên và phần thập phân. - Dấu
-
đứng trước biểu diễn một số âm.
Trong Python, không có giới hạn về số lượng chữ số sau dấu thập phân của một Floating Point Number. Tuy nhiên, để biểu diễn ngắn gọn, người ta thường dùng ký hiệu E hoặc e. Ở đây, E đại diện cho “mười mũ” (Ten raised to). Ví dụ, E4 nghĩa là 10 mũ 4, e-3 nghĩa là 10 mũ -3.
Trong ký hiệu khoa học, một số có phần hệ số và phần số mũ. Hệ số phải là một số float lớn hơn hoặc bằng 1 nhưng nhỏ hơn 10. Do đó, 1.23E+3, 9.9E-5, và 1E10 là những ví dụ về float với ký hiệu khoa học.
a = 1E10
print(a) # Kết quả: 10000000000.0
b = 9.90E-5
print(b) # Kết quả: 9.9e-05
c = 1.23E3
print(c) #Kết quả : 1230.0
Một cách khác để tạo một đối tượng float là sử dụng kết quả của một biểu thức. Trong ví dụ dưới đây, thương của phép chia hai số float được gán cho một biến, biến này sẽ tham chiếu đến một đối tượng float.
so_thu_nhat = 10.5
so_thu_hai = 2.5
ket_qua = so_thu_nhat / so_thu_hai
print("Kết quả:", ket_qua, "Kiểu dữ liệu:", type(ket_qua))
Khi thực thi đoạn mã trên, kết quả hiển thị sẽ là:
Kết quả: 4.2 Kiểu dữ liệu: <class ‘float’>
Giải thích code:
so_thu_nhat
vàso_thu_hai
: được khởi tạo là hai sốfloat
.so_thu_nhat / so_thu_hai
: Toán tử chia (/
) được sử dụng để chiaso_thu_nhat
choso_thu_hai
.ket_qua = so_thu_nhat / so_thu_hai
: Kết quả của phép chia này (là một sốfloat
) được gán cho biếnket_qua
.type(ket_qua)
: Hàmtype()
được sử dụng để kiểm tra kiểu dữ liệu củaket_qua
. Kết quả cho thấyket_qua
thuộc lớpfloat
.
Hàm float()
của Python trả về một đối tượng float sau khi chuyển đổi một số hoặc một chuỗi (nếu chuỗi đó có nội dung phù hợp). Nếu không có đối số nào được truyền vào trong cặp dấu ngoặc đơn, hàm trả về 0.0. Nếu đối số là một số nguyên (int), phần thập phân .0 sẽ được thêm vào.
a = float()
print(a) # Kết quả: 0.0
b = float(20)
print(b) # Kết quả: 20.0
Giải thích:
a = float()
: Không có đối số nào được truyền vào, nêna
nhận giá trị mặc định là 0.0.b = float(20)
: Một số nguyên 20 được truyền vào, nênb
trở thành 20.0 (thêm phần thập phân).
Ngay cả khi số nguyên được biểu diễn ở dạng nhị phân, bát phân hoặc thập lục phân, hàm float()
vẫn trả về một số float với phần thập phân là .0.
a = float(0b1010) # 0b1010 là biểu diễn nhị phân của số 10
b = float(0o12) # 0o12 là biểu diễn bát phân của số 10
c = float(0xA) # 0xA là biểu diễn thập lục phân của số 10
print(a, b, c, sep=", ")
Kết quả sẽ là:
10.0, 10.0, 10.0
Giải thích code:
a = float(0b1010)
: Ở đây0b1010
đang đại diện cho một hệ số nhị phân tương ứng với số 10 ở hệ cơ số 10, thì khi đófloat(0b1010)
chuyển giá trị của biếna
thành Floating Point Number tương ứng.- Tương tự với các giá trị
b
vàc
ở các hệ cơ số 8 và 16.
Hàm float()
có thể chuyển đổi một chuỗi chứa biểu diễn của một số Floating Point Number, ở định dạng dấu chấm thập phân tiêu chuẩn hoặc có ký hiệu khoa học, thành một số float.
chuoi_so_am = float("-123.45")
chuoi_so_khoa_hoc = float("2.5e3") # Tương đương 2.5 * 10^3
print("Số âm:", chuoi_so_am)
print("Số khoa học:", chuoi_so_khoa_hoc)
Kết quả sẽ là:
Số âm: -123.45
Số khoa học: 2500.0
Giải thích code:
chuoi_so_am = float("-123.45")
: Chuỗi"-123.45"
được chuyển đổi thành sốfloat
-123.45.chuoi_so_khoa_hoc = float("2.5e3")
: Chuỗi"2.5e3"
(biểu diễn khoa học) được chuyển đổi thành sốfloat
2500.0.
Trong toán học, vô cực (infinity) là một khái niệm trừu tượng. Về mặt vật lý, một số lớn vô hạn không thể được lưu trữ trong bất kỳ dung lượng bộ nhớ nào. Tuy nhiên, đối với hầu hết các cấu hình phần cứng máy tính, một số rất lớn với lũy thừa 400 của 10 được biểu diễn bằng Inf (viết tắt của Infinity). Nếu bạn sử dụng “Infinity” làm đối số cho hàm float(), kết quả trả về sẽ là Inf.
so_rat_lon = 1.00E400
print(so_rat_lon, type(so_rat_lon))
vo_cuc = float("Infinity")
print(vo_cuc, type(vo_cuc))
Kết quả:
inf <class ‘float’>
inf <class ‘float’>
Giải thích code:
so_rat_lon = 1.00E400
: Khi vượt quá giới hạn thì sẽ làinf
.vo_cuc = float("Infinity")
: Chuỗi"Infinity"
được chuyển đổi thành giá trị đặc biệtinf
(vô cực) trong Python, kiểu dữ liệu vẫn làfloat
.
Một thực thể đặc biệt khác là NaN (viết tắt của Not a Number – không phải là số). NaN đại diện cho bất kỳ giá trị nào không xác định hoặc không thể biểu diễn được.
khong_phai_so = float('NaN')
print(khong_phai_so)
Kết quả:
nan
Giải thích:
khong_phai_so = float('NaN')
: Chuỗi'NaN'
được chuyển thành giá trị đặc biệtnan
trong kiểu dữ liệufloat
. Nó biểu thị kết quả của phép toán không hợp lệ.
Số Phức trong Python
Một số phức bao gồm phần thực và phần ảo, được phân tách bằng dấu “+
” hoặc “−
“. Phần thực có thể là bất kỳ số thực dấu phẩy động nào (hoặc bản thân nó là một số phức). Phần ảo cũng là một số thực/số phức, nhưng được nhân với một số ảo.
Trong toán học, số ảo “i
” được định nghĩa là căn bậc hai của -1
. Vì vậy, một số phức thường được biểu diễn dưới dạng “x + yi
“, trong đó x
là phần thực và y
là hệ số của phần ảo.
Tuy nhiên, trong nhiều trường hợp, ký hiệu “j
” được sử dụng thay cho “i
” để biểu thị số ảo, nhằm tránh nhầm lẫn với việc sử dụng “i
” để biểu thị dòng điện trong lý thuyết điện. Python cũng sử dụng “j
” là số ảo. Do đó, “x + yj
” là cách biểu diễn số phức trong Python.
Giống như kiểu dữ liệu int (số nguyên) hay float (số thực), một đối tượng complex có thể được tạo bằng cách biểu diễn trực tiếp hoặc sử dụng hàm complex()
. Tất cả các câu lệnh sau đây đều tạo ra một đối tượng complex:
>>> a = 5 + 6j
>>> a
(5+6j)
>>> type(a)
<class 'complex'>
>>> b = 2.25 - 1.2J # J hoặc j đều được
>>> b
(2.25-1.2j)
>>> type(b)
<class 'complex'>
>>> c = 1.01E-2 + 2.2e3j # Dạng khoa học
>>> c
(0.0101+2200j)
>>> type(c)
<class 'complex'>
# Sử dụng hàm complex()
>>> d = complex(3, 4) # Phần thực là 3, phần ảo là 4
>>> d
(3+4j)
>>> type(d)
<class 'complex'>
Lưu ý: Nhớ rằng cả phần thực và hệ số của phần ảo đều phải là số thực (float), và chúng có thể được biểu diễn bằng ký hiệu dấu phẩy động tiêu chuẩn (ví dụ: 3.14) hoặc ký hiệu khoa học (ví dụ: 1.0e-5).
Hàm complex()
của Python giúp tạo ra một đối tượng thuộc kiểu số phức. Hàm này nhận các đối số cho phần thực và phần ảo, và trả về một số phức tương ứng.
Có hai phiên bản của hàm complex()
, một phiên bản với hai đối số và một phiên bản với một đối số. Việc sử dụng complex()
với hai đối số rất đơn giản. Đối số thứ nhất được dùng làm phần thực và đối số thứ hai là hệ số của phần ảo.
Ví dụ 1: complex()
với hai đối số (số thực)
a = complex(5.3, 6)
b = complex(1.01E-2, 2.2E3) # Ký hiệu khoa học
print("a:", a, "type:", type(a))
print("b:", b, "type:", type(b))
Kết quả:
a: (5.3+6j) type: <class ‘complex’>
b: (0.0101+2200j) type: <class ‘complex’>
Ví dụ 2: complex()
với hai đối số (số phức)
Trong ví dụ trên, các tham số x
và y
được truyền vào là các số float. Chúng cũng có thể là kiểu dữ liệu complex.
a = complex(1 + 2j, 2 - 3j)
print(a, type(a))
Kết quả:
(4+0j) <class ‘complex’>
Kết quả của ví dụ trên có thể làm cho bạn thấy bất ngờ! Hãy đặt “x
” là 1+2j
và “y
” là 2-3j
. Thử thực hiện phép tính “x+yj
” thủ công và bạn sẽ hiểu rõ hơn.
complex(1+2j, 2-3j)
= (1+2j) + (2-3j)*j
= 1 + 2j + 2j - 3j*j # j nhân j bằng -1
= 1 + 2j + 2j + 3
= 4 + 4j
Nếu bạn chỉ sử dụng một đối số dạng số cho hàm complex()
, đối số đó sẽ được coi là giá trị của phần thực; và phần ảo được đặt mặc định là 0. Ví dụ:
a = complex(5.3)
print("a:", a, "type:", type(a))
Kết quả:
a: (5.3+0j) type: <class ‘complex’>
Hàm complex()
cũng có thể chuyển đổi một chuỗi thành một số phức nếu đối số duy nhất của complex()
là một chuỗi có biểu diễn số phức.
Trong đoạn mã sau, chương trình yêu cầu người dùng nhập một số phức. Số phức này được sử dụng làm đối số (cho hàm complex()
). Vì Python đọc đầu vào (input) như một chuỗi, hàm complex()
sẽ trích xuất đối tượng số phức từ chuỗi đó. Ví dụ:
chuoi_so_phuc = input("Nhập một số phức (ví dụ: 5.5+2.3j): ")
so_phuc = complex(chuoi_so_phuc)
print("Số phức:", so_phuc)
Kết quả (ví dụ, nếu bạn nhập 5.5+2.3j):
Số phức: (5.5+2.3j)
Lớp complex có sẵn trong Python (built-in) có hai thuộc tính là real và imag − các thuộc tính này trả về phần thực và hệ số của phần ảo từ đối tượng số phức. Ví dụ:
a = 5 + 6j
print("Phần thực:", a.real, "Hệ số phần ảo:", a.imag)
Kết quả:
Phần thực: 5.0 Hệ số phần ảo: 6.0
Lớp complex cũng định nghĩa một phương thức conjugate()
. Phương thức này trả về một số phức khác với dấu của thành phần ảo bị đảo ngược. Ví dụ, số phức liên hợp của x+yj
là x-yj
. Ví dụ:
so_phuc = 5 - 2.2j
lien_hop = so_phuc.conjugate()
print(lien_hop)
Kết quả:
(5+2.2j)
Chuyển đổi kiểu numbers trong Python
Python tự động chuyển đổi kiểu number bên trong các biểu thức có chứa nhiều kiểu dữ liệu khác nhau sang một kiểu chung để tính toán. Tuy nhiên, đôi khi bạn cần chủ động ép kiểu một số từ kiểu này sang kiểu khác để đáp ứng yêu cầu của toán tử hoặc tham số của hàm.
Dưới đây là một số hàm thường dùng để chuyển đổi kiểu số:
int(x)
: Chuyểnx
thành một số nguyên (integer).float(x)
: Chuyểnx
thành một số thực (floating-point number).complex(x)
: Chuyểnx
thành một số phức (complex number) với phần thực làx
và phần ảo bằng0
. Tương tự, complex(x, y
) chuyểnx
vày
thành một số phức với phần thực làx
và phần ảo lày. x
vày
là các biểu thức số.
Giả sử bạn đang tính tiền mua hàng và cần chuyển đổi giá trị từ dạng chuỗi (nhập từ người dùng) sang dạng số để tính toán:
gia_tien_chuoi = "25000" # Giá tiền dưới dạng chuỗi
so_luong = 3
# Chuyển đổi giá tiền sang số nguyên
gia_tien_so = int(gia_tien_chuoi)
# Tính tổng tiền
tong_tien = gia_tien_so * so_luong
print(f"Tổng số tiền cần thanh toán là: {tong_tien}")
Trong ví dụ này:
gia_tien_chuoi
ban đầu là một chuỗi.- Ta dùng
int(gia_tien_chuoi)
: để chuyểngia_tien_chuoi
từ dạng chuỗi sang số nguyên và lưu vào biếngia_tien_so
. - Sau đó, ta có thể dùng
gia_tien_so
để tính toán một cách chính xác.
Các hàm toán học trong Module Math
Python bao gồm các hàm lý thuyết và biểu diễn trong module math như sau:
Stt | Mô tả chức năng |
1 | math.ceil(x) Trả về số nguyên nhỏ nhất lớn hơn hoặc bằng x (làm tròn lên). |
2 | math.comb(n,k) Trả về số cách chọn k phần tử từ n phần tử, không lặp và không quan tâm thứ tự (tổ hợp). |
3 | math.copysign(x, y) Trả về một số thực có độ lớn (giá trị tuyệt đối) của x nhưng có dấu của y . |
4 | math.cmp(x, y) Hàm này dùng để so sánh các giá trị đối tượng, không còn được sử dụng trong Python 3 |
5 | math.fabs(x) Trả về giá trị tuyệt đối của x (số thực). |
6 | math.factorial(n) Trả về giai thừa của n (số nguyên không âm). |
7 | math.floor(x) Trả về số nguyên lớn nhất nhỏ hơn hoặc bằng x (làm tròn xuống). |
8 | math.fmod(x, y) Trả về phần dư của phép chia x cho y. fmod() cho kết quả chính xác hơn toán tử % khi làm việc với số thực. |
9 | math.frexp(x) Tách x thành phần định trị (mantissa) và số mũ (exponent). |
10 | math.fsum(iterable) Tính tổng (dưới dạng số thực) của tất cả các phần tử trong một iterable (như list, tuple) chứa số. |
11 | math.gcd(*integers) Trả về ước chung lớn nhất (GCD) của các số nguyên truyền vào. |
12 | math.isclose() Kiểm tra xem hai giá trị số a và b có “gần nhau” không (trong một khoảng sai số cho phép). |
13 | math.isfinite(x) Kiểm tra xem x có phải là một số hữu hạn không (không phải là vô cực hay NaN). |
14 | math.isinf(x) Kiểm tra xem x có phải là vô cực (dương hoặc âm) không. |
15 | math.isnan(x) Kiểm tra xem x có phải là “NaN” (Not a Number) không. |
16 | math.isqrt(n) Trả về căn bậc hai số nguyên của n (số nguyên không âm). |
17 | math.lcm(*integers) Trả về bội chung nhỏ nhất (LCM) của các số nguyên truyền vào. |
18 | math.ldexp(x, i) Trả về x * (2**i) . Đây là hàm ngược của math.frexp(). |
19 | math.modf(x) Trả về phần thập phân và phần nguyên của x dưới dạng một tuple chứa hai phần tử. |
20 | math.nextafter(x, y, steps) Trả về số dấu phẩy động tiếp theo của x hướng tới y . |
21 | math.perm(n, k) Tính số hoán vị (có thứ tự) của k phần tử được chọn từ n phần tử. |
22 | math.prod(iterable, *, start) Tính tích của tất cả các phần tử trong một iterable (list, tuple…). Giá trị start (mặc định là 1) được nhân thêm vào tích. |
23 | math.remainder(x,y) Trả về phần dư của x chia cho y , phần này là số nguyên. |
24 | math.trunc(x) Loại bỏ phần thập phân, giữ lại phần nguyên. trunc() tương đương floor() với x dương, và tương đương ceil() với x âm. |
25 | math.ulp(x) Trả về giá trị của bit có trọng số nhỏ nhất của x (số thực). |
Các hàm lũy thừa và logarit
Stt | Hàm và Mô tả |
1 | math.cbrt(x) Tính căn bậc ba của một số x . |
2 | math.exp(x) Tính lũy thừa cơ số e của x . |
3 | math.exp2(x) Trả về 2 mũ x . Hàm này tương đương với 2**x . |
4 | math.expm1(x) Trả về e - 1 . Trong đó, e là cơ số của logarit tự nhiên. |
5 | math.log(x) Tính logarit tự nhiên của x , với điều kiện x > 0 . |
6 | math.log1p(x) Tính logarit tự nhiên của 1 + x (cơ số e). Kết quả được tính toán một cách chính xác khi x gần 0 . |
7 | math.log2(x) Trả về logarit cơ số 2 của x . Hàm này thường chính xác hơn so với log(x, 2) . |
8 | math.log10(x) Tính logarit cơ số 10 của x , với x > 0 . |
9 | math.pow(x, y) Trả về giá trị của x mũ y . |
10 | math.sqrt(x) Tính căn bậc hai của x , với x > 0 . |
Các hàm lượng giác trong Python
Module math trong Python cung cấp các hàm để thực hiện các phép tính toán lượng giác. Dưới đây là một số hàm lượng giác thường dùng:
Stt | Hàm và Mô Tả |
1 | math.acos(x) Trả về arc cosine của x , tính bằng radian. |
2 | math.asin(x) Trả về arc sine của x , tính bằng radian. |
3 | math.atan(x) Trả về arc tangent của x , tính bằng radian. |
4 | math.atan2(y, x) Trả về atan( y / x ), tính bằng radian. |
5 | math.cos(x) Trả về cosine của x tính bằng radian. |
6 | math.sin(x) Trả về sine của x tính bằng radian. |
7 | math.tan(x) Trả về tangent của x tính bằng radian. |
8 | math.hypot(x, y) Trả về độ dài của vector từ gốc tọa độ đến điểm ( x, y ). |
Hàm chuyển đổi góc trong Python
Module math trong Python cung cấp các hàm sau để chuyển đổi giữa đơn vị radian và độ:
Stt | Hàm & Mô tả |
1 | math.degrees(x) Chuyển đổi góc x từ radian sang độ. |
2 | math.radians(x) Chuyển đổi góc x từ độ sang radian. |
Hằng số toán học trong Python
Module math của Python định nghĩa các hằng số toán học sau đây:
Stt | Hằng số & Mô tả |
1 | math.pi Biểu diễn hằng số pi trong toán học, với giá trị xấp xỉ bằng 3.141592… |
2 | math.e Biểu diễn hằng số e trong toán học, có giá trị xấp xỉ bằng 2.718281… |
3 | math.tau Biểu diễn hằng số Tau ( τ ) trong toán học. Tương đương với tỷ lệ giữa chu vi và bán kính đường tròn, bằng 2π. |
4 | math.inf Biểu diễn giá trị dương vô cực. Để có giá trị âm vô cực, sử dụng -math.inf . |
5 | math.nan Hằng số này biểu diễn giá trị “không phải là một số” (NaN) ở dạng số thực. Giá trị của math.nan tương đương với kết quả của float('nan') . |
Hàm Hyperbolic trong Python
Hàm hyperbolic là các hàm tương tự như hàm lượng giác, nhưng thay vì dựa trên đường tròn, các hàm hyperbolic dựa trên hyperbola. Module math trong Python cung cấp các hàm hyperbolic sau:
Stt | Hàm và Mô tả |
1 | math.acosh(x) Tính arccosine hyperbolic của một giá trị. (Trả về giá trị acosh của x). |
2 | math.asinh(x) Tính arcsine hyperbolic của một số. |
3 | math.atanh(x) Tính arctangent hyperbolic của một số. |
4 | math.cosh(x) Tính cosine hyperbolic của một giá trị. |
5 | math.sinh(x) Tính sine hyperbolic của một số. |
6 | math.tanh(x) Tính tangent hyperbolic của một số. |
Lưu ý: Trong toán học “arc” có nghĩa là “nghịch đảo”. Các bạn sẽ làm quen với các khái niệm acosh, asinh, atanh …trong chương trình toán.
Các hàm đặc biệt trong Python
Module math trong Python cũng cung cấp các hàm đặc biệt sau:
Stt | Hàm và Mô tả |
1 | math.erf(x) Trả về giá trị của hàm lỗi Gauss (Gauss error function) cho tham số đầu vào. |
2 | math.erfc(x) Hàm bù của hàm lỗi. Giá trị của math.erfc(x) tương đương với 1 - math.erf(x) . |
3 | math.gamma(x) Tính giai thừa của số phức. Hàm này được định nghĩa cho tất cả các số phức trừ các số nguyên không dương. |
4 | math.lgamma(x) Tính logarit tự nhiên của giá trị tuyệt đối của hàm Gamma tại x . |
Các hàm số ngẫu nhiên trong Python
Số ngẫu nhiên được sử dụng trong nhiều ứng dụng như trò chơi, mô phỏng, kiểm thử phần mềm, bảo mật và các ứng dụng liên quan đến quyền riêng tư. Module random trong Python cung cấp các hàm sau đây để làm việc với số ngẫu nhiên.
Stt | Hàm & Mô Tả |
1 | random.choice(seq) Chọn một phần tử ngẫu nhiên từ một list, tuple, hoặc string. |
2 | random.randrange([start,] stop [,step]) Chọn ngẫu nhiên một phần tử từ range(start, stop, step). |
3 | random.random() Trả về một số thực (float) ngẫu nhiên r , sao cho 0 ≤ r < 1 . |
4 | random.seed([x]) Thiết lập giá trị khởi đầu (seed) cho việc tạo số ngẫu nhiên. Nên gọi hàm này trước khi dùng các hàm khác trong module random. Không trả về giá trị (None). |
5 | random.shuffle(seq) Xáo trộn (randomize) các phần tử của sequence (chuỗi, list, tuple) đã cho. |
6 | random.uniform(a, b) Trả về một số thực ngẫu nhiên r , sao cho a ≤ r < b . |
Các hàm toán học tích hợp sẵn
Python có sẵn các hàm toán học sau đây trong trình thông dịch, vì vậy bạn không cần import chúng từ bất kỳ module nào.
Stt | Hàm & Mô Tả |
1 | abs(x) Trả về giá trị tuyệt đối của x (khoảng cách từ x đến 0 ). |
2 | max(arg1, arg2, ...) hoặc max(iterable) Trả về giá trị lớn nhất trong các đối số, hoặc phần tử lớn nhất trong một iterable (như list hoặc tuple). |
3 | min(arg1, arg2, ...) hoặc min(iterable) Trả về giá trị nhỏ nhất, hoặc phần tử nhỏ nhất trong iterable. |
4 | pow(x, y) Trả về lũy thừa x mũ y (tương đương với x**y ) |
5 | round(x, n) Làm tròn số x đến n chữ số sau dấu thập phân. |
6 | sum(iterable, start=0) Trả về tổng tất cả các số trong iterable, cộng thêm giá trị start (mặc định start là 0). |
Lời kết
Như vậy, chúng ta đã cùng nhau khám phá chi tiết về kiểu dữ liệu Number trong Python, từ số nguyên, số thực, số phức, cho đến các hệ cơ số khác nhau và cách chuyển đổi giữa chúng. Bên cạnh đó, mình còn giới thiệu các hàm toán học, hàm số ngẫu nhiên và các hàm tích hợp sẵn, giúp bạn dễ dàng thao tác với số trong Python. Hy vọng rằng những kiến thức này sẽ hữu ích cho bạn trong quá trình lập trình.
Mọi người cũng đọc