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ố. Show
– 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.
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 13Chuyển đổi giữa các kiểu dữ liệu số trong PythonKhi 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.5Chú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() và 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 PythonKhi 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? FalseRõ 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 PythonMặ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.3Khi bạn muốn cộng 1.1 và 2.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') và 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.07692307692Kiể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ị 1 và False đượ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: 10Mộ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 stringLưu ý: Chuỗi u”\u00dcnic\u00f6de” chứa các ký tự Unicode. Trong đó, \u00dc đại diện cho Ü và \u00f6 đại diện cho ö. Còn r”raw \n string” là một chuỗi ký tự thô (raw string). Bài trước và bài sau trong môn học
Trong các bài trước, bạn đã làm quen với khái niệm BIẾN TRONG PYTHON. Ở bài này Kteam sẽ đề cập đến các bạn KIỂU DỮ LIỆU SỐ. Một trong những kiểu dữ liệu cực kì quan trọng của Python! Nội dung chínhĐể đọc hiểu bài này tốt nhất bạn cần: Trong bài học này, chúng ta sẽ cùng tìm hiểu các vấn đề:
Số là gì?Con số ở khắp nơi trong cuộc sống chúng ta. Bất cứ lúc nào bạn cũng có thể bắt gặp con số trong cuộc sống. Tháng này có 30 hay 31 ngày? Mai đi chợ bó rau muốn 3000 đồng hay là 3500 đồng? Bài thi hôm bữa được 9,1 điểm hay là 1,9? Cái bánh này mình ăn ½ hay là ¾. Có thể thấy, số không còn là điều gì xa lạ với bạn. Và đương nhiên điều này tương tự với “con trăn” Python. Trong Python cũng hỗ trợ rất nhiều kiểu dữ liệu số. Một số kiểu dữ liệu cơ bản như số nguyên (integers), số thực (floating-point), phân số (fraction), số phức (complex). Và những kiểu dữ liệu này sẽ được Kteam giới thiệu cho các bạn ngay sau đây! Một số kiểu dữ liệu số cơ bản trong PythonSố nguyênSố nguyên bao gồm các số nguyên dương (1, 2, 3, ..), các số nguyên âm (-1, -2, -3) và số 0. Trong Python, kiểu dữ liệu số nguyên cũng không có gì khác biệt. Ví dụ: Gán giá trị cho một biến a là 4 và xuất ra kiểu dữ liệu của a. >>> a = 4 # gán giá giá trị của biến a là số 4, là một số nguyên >>> a 4 >>> type(a) # số nguyên thuộc lớp ‘int’ trong Python <class ‘int’>Một điểm đáng chú ý trong Python 3.X đó là kiểu dữ liệu số nguyên là vô hạn. Điều này cho phép bạn tính toán với những số cực kì lớn, điều mà đa số các ngôn ngữ lập trình khác KHÔNG THỂ. Số thựcVề kiểu dữ liệu số thực, thì đây là tập hợp các số nguyên và số thập phân 1, 1.4, -123, 69.96,… Ví dụ: Gán giá trị của biến f là 1.23 và xuất ra kiểu dữ liệu của f. >>> f = 1.23 # gán giá trị của biến f là số 1.23, là một số thực >>> f 1.23 >>> type(f) # số thực trong Python thuộc lớp ‘float’ <class ‘float’> >>> q = 1.0 # đây là số thực, không phải số nguyên >>> q 1.0 >>> type(q) <class ‘float’>
Số thực trong Python có độ chính xác xấp xỉ 15 chữ số phần thập phân. Ví dụ: Số thực 10/3 >>> 10 / 3 # đây là một số vô hạn tuần hoàn 3.3333333333333333333.. 3.3333333333333335Nếu bạn muốn có kết quả được chính xác cao hơn, bạn nên sử dụng Decimal >>> from fractions import Fraction # lấy toàn bộ nội dung của thư viện Decimal,khuyến khích dùng: from fractions import Fraction trong việc học để tạo thói quen trong công việc sau này. >>> getcontext().prec = 30 # lấy tối đa 30 chữ số phần nguyên và phần thập phân Decimal >>> Decimal(10) / Decimal(3) Decimal(‘3. 33333333333333333333333333333’) >>> Decimal(100) / Decimal(3) Decimal(’33.3333333333333333333333333333’) >>> type(Decimal(5)) # các số Decimal thuộc lớp Decimal <class 'decimal.Decimal'>Tuy Decimal có độ chính xác cao hơn so với float tuy nhiên nó lại khá rườm rà so với float. Do đó, hãy cân bằng sự tiện lợi và chính xác để chọn kiểu dữ liệu phù hợp. Phân sốChúng ta biết đến phân số qua sách giáo khoa toán lớp 3. Phân số gồm hai phần là tử số và mẫu số. Tạo một phân sốĐể tạo phân số trong python, ta sử dụng hàm Fraction với cú pháp sau
Ví dụ: Nhập phân số ¼, 3/9, ¾, >>> from fractions import * # lấy toàn bộ nội dung của thư viện decimal >>> Fraction(1, 4) # phân số với tử số là 1, mẫu số là 4. Fraction(1, 4) >>> Fraction(3, 9) # phân số sẽ được tối giản nếu có thể Fraction(1, 3) >>> type(Fraction(3, 4)) # các phân số thuộc lớp Fraction <class 'fractions.Fraction'>Tất nhiên, việc tạo một phân số với mẫu số bằng 0 sẽ gây lỗi. >>> from fractions import * >>> Fraction(1, 0) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Users\PC\AppData\Local\Programs\Python\Python310\lib\fractions.py", line 156, in __new__ raise ZeroDivisionError('Fraction(%s, 0)' % numerator) ZeroDivisionError: Fraction(1, 0) >>> Fraction(1.55, 0) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Users\PC\AppData\Local\Programs\Python\Python310\lib\fractions.py", line 152, in __new__ raise TypeError("both arguments should be " TypeError: both arguments should be Rational instancesSố phứcNếu bạn chưa biết đến Số Phức, Kteam khuyên bạn nên bỏ qua phần này. Số phức gồm 2 thành phần :
Trong đó
Tạo một số phứcĐể tạo một số phức, bạn có thể sử dụng hàm complex với cú pháp sau
Gán giá trị số phức cho một biến
|