Reportar esta app

Description

Trong bài học này chúng ta sẽ xem xét chi tiết các kiểu dữ liệu số trong Python, bao gồm int, float và complex. Chúng ta cũng xem xét một số phép toán và hàm thường gặp với dữ liệu kiểu số. So với các ngôn ngữ lập trình như C# hay Java, các kiểu số trong Python đơn giản hơn nhưng lại có điểm đặc thù. Các phép toán cơ bản của Python khá tương tự như trong C và các ngôn ngữ khác.


Giới thiệu chung về kiểu số trong Python

Số là kiểu dữ liệu cơ bản nhất trong các ngôn ngữ lập trình. Ngôn ngữ Python hỗ trợ sẵn 3 kiểu số cơ bản: int ( số nguyên có dấu lớn tùy ý), float ( số thực), complex ( số phức).

Python căn cứ vào cách viết (literal) của giá trị để tự xác định kiểu cho giá trị số tương ứng.

Ví dụ, a = 10 sẽ tạo ra một số nguyên, b=10. sẽ tạo ra một số thực, b = 10 j sẽ tạo ra một số phức. Chi tiết về cách viết các loại số sẽ trình bày trong các phần tiếp theo của bài học.

Python hỗ trợ tất cả các phép toán số học cơ bản trên các kiểu số cũng như các phép toán phức tạp hơn ( ở dạng các hàm) trong module math như log, sin, cos. Ngoài ra Python cũng rất nổi tiếng về các thư viện hỗ trợ tính toán do cộng đồng cung cấp.

Một số đặc điểm quan trọng của kiểu số trong Python là tính bất biến ( immutability). Nghĩa là giá trị số một khi đã tạo ra trong bộ nhớ ( và có biến tham chiếu tới), nó sẽ không thay đổi được nữa. Nếu bạn thay đổi giá trị của một số, trên thực tế Python sẽ tạo ra một giá trị mới trong bộ nhớ.

Tham khảo thêm ngay  Module và package trong Python

Ví dụ nếu ban đầu bạn tạo ra một giá trị số qua lệnh gán a = 10, Python sẽ tạo một giá trị 10 trong bộ nhớ và để a trỏ vào giá trị này. Nếu sau đó bạn lại gán a = 10 j. Python không hề thay đổi giá trị số mà a trỏ tới. Thay vào đó Python sẽ tạo một giá trị mới 10j trong bộ nhớ và để a trỏ tới giá trị mới này. Giá trị cũ 10 sẽ không còn được tham chiếu tới nữa. SAu một thời gian Garbage Collector sẽ dọn dẹp giá trị này để thu hồi bộ nhớ.

Kiểu số nguyên int

Kiểu int biểu diễn cho các số nguyên có dấu với độ lớn tùy ý. Kiểu int trong Python không sử dụng số bit cố định để biểu diễn như trong các ngôn ngữ khác. Tùy thuộc vào giá trị cụ thể Python sẽ chọn số bit phù hợp. Giá trị nguyên lớn nhất mà Python biểu diễn được chỉ phụ thuộc vào bộ nhớ.

Python hỗ trợ biểu diễn số nguyên dương, số nguyên âm, số ở dạng thập phân, hệ cơ số 8, hệ cơ số 16.

Khi biểu diễn số ở cơ số 8 bạn dùng tiếp tố 0o hoặc 0O ( số không và chữ o hoa/ thường).

Khi biểu diễn số ở hệ 16 thì dùng tiếp tố 0x hoặc 0X ( số 0 và chữ x/ X).

Dưới đây là ví dụ về cách biểu diễn số nguyên trong Python:

Giá trịGhi chú
100Số nguyên dương
-100 số nguyên âm
0o100,00100số nguyên dương ở cơ số 8 ( số 64 cơ số 10).
-0o100, -00100số âm ở cơ số 8
0x100,0X100số dương ở cơ số 16 ( 256 cơ số 10).
-0x100,-0X100Số âm ở cơ số 16.

Chú ý khi viết số ở cơ số 8 tốt nhất là dùng chữ o thường do chữ O hoa rất dễ nhầm với số 0

Tham khảo thêm ngay  Hướng dẫn tự học lập trình Python

Python cũng cho phép dùng ký tự gạch chân _ để nhóm các chữ số trong biểu diễn số


1
2
3
>>> i = 1_000_000 # tương đương với 1000000 nhưng dễ đọc hơn nhiều
>>> i
1000000
python

Kiểu boolean trong Python cũng là một kiểu con của kiểu số nguyên. Trong đó 0 tương ứng với False, mọi giá trị nguyên khác tương ứng với True.

Chú ý: Python 2.x có hai kiểu số nguyên int và long. Kiểu long cần biểu diễn với hậu tố L ( hoặc l). Số nguyên ở hệ cơ số 8 viết bắt đầu bằng 0. Vì vậy, khi đọc tài liệu nên lưu ý xem đó là Python 2 hay Python 3. Hai phiên bản này có nhiều điểm không tương thích.

Để biến đổi từ các kiểu dữ liệu khác về số nguyên bạn có thể sử dụng hàm int(). Ví dụ:


1
2
3
4
5
>>> age = int(input("Your age: ")) # chuyển chuỗi về số nguyên
Your age: 37
>>> print('You were born in', 2020-age)
You were born in 1983
>>>

Kiểu số thực float.

Trong Python dùng để biểu diễn số thực dùng dấy phẩy động. Để viết số thực trong Python bạn cần đặt 1 dấu chấm thập phân. Dưới đây là các cách biểu diễn giá trị thực trong Python:

Giá trị floatGhi chú
0.0 Giá trị 0.0 (float) chưa chắc đã bằng 0 (int)
100.0 Số thực dương
-100.0Số thực âm
100e2, -100e2Cách viết khoa học, bằng +/- 100 *10^2 = +/- 10000.0
100e-2,-100e-2Cahs viết khoa học, bằng +/- 100*10^-2=+/- 1.0
100., -100.Không cần viết số 0 sau dấu thập phân, thương đương 100.0, -100.0

Bạn có thể xem thông tin kiểu float như sau:


1
2
3
4
5
6
7
8
>>> import sys
>>> sys.float_info
sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)
>>> sys.float_info.max # giá trị cực đại của kiểu float
1.7976931348623157e+308
>>> sys.float_info.min # giá trị cực tiểu của kiểu float
2.2250738585072014e-308
>>>

Bạn cũng có thể dùng ký tự gạch chân để nhóm các chữ số khi viết số thực:


1
2
3
>>> i = 1_000_000.001
>>> i
1000000.001

Để biến đổi từ kiểu dữ liệu khác về kiểu float bạn có thể dùng hàm float()


1
2
3
4
5
6
7
>>> exchange_rate = float(input("Exchange Rate: "))
Exchange Rate:
23.3

>>> print('USD 100 will be VND', exchange_rate * 100)
USD 100 will be VND 2330.0
>>>

Trong phép toán mà toán hạng bao gồm cả số thực và số nguyên, kết quả của cả phép toán sẽ thuộc kiểu số thực.

Tham khảo thêm ngay  Decorator ( hàm trang trí) trong Python

Ví dụ:


1
2
3
4
5
6
>>> 1 + 2.0 # kết quả sẽ thuộc kiểu số thực
3.0
>>> 2 * 3.0
6.0
>>> 3.0 ** 2
9.0

Kiểu số phức complex.

Python là một trong số ít các ngôn ngữ hỗ trợ thực tiếp kiểu số phức. Tuy niheen số phức tương đối ít được sử dụng.

Trong toán học, số phức được biểu diễn bởi dạng tổng quát a + bi với i là đơn vị ảo. Trong Python, đơn vị ảo được biểu diễn bằng ký tự j hoặc J.

Như vậy, số phức trong Python cần chứa ký tự j hoặc J để biểu diễn phần ảo. Dưới đây là ví dụ về cách biểu diễn số phức trong Python:

Giá trị phứcGhi chú
3.14jChỉ có phần ảo 0+3.14j
45.jChính là 0+45j
3+2jsố phức 3+2j
1+3.2e25jPhần ảo biểu diễn dạng khoa học
1+jLỗi: j ở đây hiểu là một biến. bạn phải viết 1+ 1j.

Để làm việc riêng với phần thực hoặc phần ảo bạn sử dụng cách sau:


1
2
3
4
5
6
>>> c = 1.23 + 4.56j
>>> c.real
1.23
>>> c.imag
4.56
>>>

real và imag là hai thành viên của kiểu complex giúp bạn trích giá trị của phần nguyên và phần ảo.

Các phép toán trên kiểu số

Python hỗ trợ tất cả các phép toán số học cơ bản trên kiểu số:

Phép toánÝ nghĩa Sử dụngVí dụ
+Phép cộng a+b
Phép trừa-b
*Phép nhâna*b
/Phép chiaa/b
%Phép chia lấy dưa%b4%2=0 , 4%3=1
**Phép lũy thừaa**b2**3=8
//Phép chia lấy phần nguyêna//b9//2=4

Các phép so sánh có thể áp dụng trên tất cả các kiểu số. Kết quả của phép toán so sánh thuộc về kiểu boolean (True/False).

Phép toáný nghĩasử dụng
==So sánh bằng a==b
!=So sánh kháca!=b
>So sánh hơna>b
< So sánh nhỏ hơna<b
>=Lớn hơn hoặc bằng a>=b
<=Nhỏ hơn hoặc bằng a<=b

Lư ý trong Python 2.x có hai phép toán so sánh khác != và <>. Trong Python 3.x chỉ còn phép so sánh !=

Python hỗ trợ các phép toán gán:

Phép toánCách dùngÝ nghĩa
+=a+=btương tương a = a+b
-=a-=ba=a-b
*=a*=ba=a*b
/=a/=ba=a/b
%=a%=ba=a%b
**=a**=ba=a**b
//=a//=a=a//b

Python cung cấp một số hàm xử lý số:

abs(x)Lấy giá trị tuyệt đối x
int(x)Chuyển đổi x sang kiểu số nguyên
float (x)Chuyển đổi x sang kiểu số thực
complex(re,im)Tạo số phức với phần thực re, phần ảo im.
divmod(x,y)Thực hiện cặp phép toán (x//y, x%y). Ví dụ divmod (10,2) cho kết quả (5,0).
pow(x,y) Tương tự x**y.
hex(x)Trả về dạng biểu diễn cơ số 16 của số x
oct(x)Trả về dạng biểu diễn cơ số 8 của số x.

Nếu bạn cần thực hiện phép toán phức tạp hơn bạn có thể sử dụng module math như sau


1
2
3
4
5
import math # sử dụng thư viện math

math.sin(180)
math.log(1)
math.factorial(10)

Leave a Reply

Your email address will not be published. Required fields are marked *