Các kiểu dữ liệu (data type) cơ bản trong Python

Đây là bài 6/54 bài của series môn học Ngôn ngữ lập trình Python

1. Kiểu dữ liệu số (numeric) trong Python

Python hỗ trợ các kiểu dữ liệu số: số nguyên (integer), số thực (float) và số phức (complex). Python định nghĩa các lớp (class) là int, float và complex để lưu trữ và xử lý các kiểu dữ liệu số.

Số nguyên (integer) được đại diện bởi lớp int, chứa các số nguyên dương hoặc nguyên âm (không có phần thập phân). Trong Python, số nguyên không có giới hạn về độ dài.

Số thực (float) được đại diện bởi lớp float, biểu diễn các số thực với dấu chấm động (có độ chính xác với 15 chữ số ở phần thập phân). Các số thực có thể được biểu diễn với ký hiệu e hoặc E là một cách ghi khoa học của a10b. Ví dụ, 1.5e2 tương đương 1.5 x 102.

Số phức (complex) được đại diện bởi lớp complex. Số phức được viết dưới dạng x + yj. Trong đó, x là phần thực, y là phần ảo.

Trong Python, chúng ta có thể biểu diễn các số ở hệ nhị phân, thập lục phân (cơ số 16) và hệ bát phân. Chúng ta sẽ sử dụng tiền tố (prefix) ở trước một số để xác định số đó đang được biểu diễn ở hệ cơ số nào.

Number SystemPrefix
Binary‘0b’ or ‘0B’
Octal‘0o’ or ‘0O’
Hexadecimal‘0x’ or ‘0X’
a = 5
print(type(a))
print("a is an integer number?", isinstance(a, int))

print(type(5.0))

c = 5 + 3j
print(c + 3)
print(type(c))
print("c is a complex number?", isinstance(c, complex))

# Output: 107
print(0b1101011)

# Output: 253 (251 + 2)
print(0xFB + 0b10)

# Output: 13
print(0o15)
Kết quả
<class 'int'>
a is an integer number? True
<class 'float'>
(8+3j)
<class 'complex'>
c is a complex number? True 
107
253
13

Chuyển đổi giữa các kiểu dữ liệu số trong Python

Khi cộng, trừ, nhân, chia một số nguyên với một số thực thì số nguyên tự động bị ép kiểu sang số thực để thực hiện phép tính. Do đó, kết quả thực hiện phép tính sẽ là một số thực.

print(1 + 2.0)
print(1 - 2.0)
print(1 * 2.0)
print(1 / 2.0)
Kết quả
3.0
-1.0
2.0
0.5

Chúng ta cũng có thể sử dụng các hàm được xây dựng sẵn trong Python như int(), float()complex() để chuyển đổi  giữa các kiểu dữ liệu.

a = int(2.3)
b = int(-2.8)
c = float(5)
d = complex('3+5j')
print(a)
print(b)
print(c)
print(d)
Kết quả
2
-2
5.0
(3+5j)

Một số lưu ý khi sử dụng kiểu dữ liệu số trong Python

Khi tính toán giữa các số thực, chúng ta cần lưu ý về độ chính xác của kết quả. Ví dụ:

a = 1.1 + 2.2
print(a)
print("a == 3.3?", (a==3.3))
Kết quả
3.3000000000000003
a == 3.3? False

Rõ ràng, kết quả không phải là 3.3 mà là 3.3000000000000003. Điều này là do cơ chế lưu trữ dấu chấm động của phần thập phân trong máy tính bằng các số nhị phân 0 và 1 (do máy tính chỉ hiểu bit 0 và 1).

Ví dụ, số thập phân 0.1 được biểu diễn ở hệ nhị phân sẽ là một dãy nhị phân dài vô hạn là 0.000110011001100110011…. Tuy nhiên, máy tính của chúng ta chỉ lưu trữ một số hữu hạn các số nhị phân để biểu diễn số thập phân 0.1. Do đó, bất cứ số thập phân nào cũng mang tính chất chính xác tương đối.

Sử dụng module decimal trong Python

Mặc định, số thực (float) trong Python chỉ có độ chính xác với tối đa 15 chữ số ở phần thập phân. Chúng ta có thể sử dụng module decimal được cài đặt sẵn trong Python để xác định độ chính xác là bao nhiêu số thập phân.

import decimal
#return 0.05000000000000000277555756156289135105907917022705078125
print(decimal.Decimal(0.05))
#return 0.05
print(decimal.Decimal('0.05'))

#return 
a = 1.1 + 2.2
print(a)
#return 
b = decimal.Decimal('1.1') + decimal.Decimal('2.2')
print(b)
Kết quả
0.05000000000000000277555756156289135105907917022705078125
0.05
3.3000000000000003
3.3

Khi bạn muốn cộng 1.12.2 để ra kết quả chính xác là 3.3 thì nên sử dụng module decimal với decimal.Decimal('1.1')decimal.Decimal('2.2').

Để kiểm soát độ chính xác phần thập phân có bao nhiêu chữ số, chúng ta có thể sử dụng hàm getcontext() với thuộc tính prec. Ví dụ:

import decimal

# returns 0.07692307692307692307692307692
print(decimal.Decimal(1) / decimal.Decimal(13))

decimal.getcontext().prec = 10
#return 0.07692307692
print(decimal.Decimal(1) / decimal.Decimal(13))
Kết quả
0.07692307692307692307692307692
0.07692307692

2. Kiểu dữ liệu luận lý (boolean) trong Python

Kiểu dữ liệu luận lý (boolean) trong Python chỉ có 2 giá trị là True hoặc False. Trong Python, True được đại diện bởi giá trị 1False được đại diện bởi giá trị 0. Ví dụ:

x = (1 == True)
y = (1 == False)
a = True + 4
b = False + 10

print("x is", x)
print("y is", y)
print("a:", a)
print("b:", b)
Kết quả
x is True
y is False
a: 5
b: 10

3. Kiểu dữ liệu chuỗi ký tự (string) trong Python

Một chuỗi ký tự (string) là một chuỗi các ký tự được bao quanh bởi dấu nháy kép. Chúng ta có thể sử dụng cả dấu nháy đơn, dấu nháy kép hoặc 3 dấu nháy kép cho một chuỗi ký tự. Chuỗi ký tự (string) trong Python được đại diện bởi lớp str.

Trong Python, không có kiểu dữ liệu ký tự (character), mà một ký tự là một chuỗi (string) có độ dài là 1 ký tự.

strings = "This is Python"
char = "C"
multiline_str = """This is a multiline string with more than one line code."""
unicode = u"\u00dcnic\u00f6de"
raw_str = r"raw \n string"

print(strings)
print(char)
print(multiline_str)
print(unicode)
print(raw_str)
Kết quả
This is Python
C
This is a multiline string with more than one line code.
Ünicöde
raw \n string

Lưu ý: Chuỗi u”\u00dcnic\u00f6de” chứa các ký tự Unicode. Trong đó, \u00dc đại diện cho Ü\u00f6 đại diện cho ö. Còn r”raw \n string” là một chuỗi ký tự thô (raw string).

5/5 - (2 bình chọn)
Bài trước và bài sau trong môn học<< Đặc điểm của biến (variable) và hằng (constant) trong PythonCác loại toán tử (operator) được hỗ trợ trong Python >>
Chia sẻ trên mạng xã hội:

Để lại một bình luận

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.