Hướng dẫn digit in python
Trong bài này mình sẽ giới thiệu kiểu dữ liệu Number trong Python, tìm hiểu về các loại number khác nhau được sử dụng trong Python, cách chuyển đổi từ loại dữ liệu này sang loại dữ liệu khác và các hoạt động toán học được hỗ trợ trong Python. Show Nội dung chính
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức. Nói đến Number thì chắc ai cũng biết đây là kiểu số. Tuy nhiên, chúng ta có rất nhiều loại số khác nhau như số nguyên (int), số thực (float), số phức (complex number). Vì vậy bạn phải nắm vững cách chuyển đổi giữa chúng. 1. Number trong Python là gì?Number là một nhóm dữ liệu thường dùng trong Python, nó dùng để lưu trữ hầu hết các kiểu về số như số thực, số phức, số nguyên. Python hỗ trợ số nguyên, số thực và số phức. Chúng được định nghĩa trong các lớp Bài viết này được đăng tại [free tuts .net] Integer và float được phân biệt bằng dấu chấm động ( Ví dụ: Số 5 thuộc kiểu Số phức được viết dưới dạng Chúng ta có thể sử dụng hàm Ví dụ # Output: Trong khi số nguyên có thể có độ dài bất kỳ, số dấu phẩy động chỉ chính xác tối đa 15 vị trí thập phân (vị trí thứ 16 không chính xác). Các số chúng ta xử dụng hàng ngày là hệ thống số thập phân (cơ sở 10). Nhưng các lập trình viên máy tính (nói chung là lập trình viên nhúng) cần phải làm việc với các hệ thống số nhị phân (cơ sở 2), hệ thập lục phân (cơ sở 16) và số bát phân (cơ sở 8). Trong Python, chúng ta có thể biểu diễn các số này bằng cách đặt một tiền tố thích hợp trước số đó. Bảng sau liệt kê các tiền tố này.
Dưới đây là một vài ví dụ cách sử dụng các tiền tố prefix: # Output: 107 print(0b1101011) # Output: 253 (251 + 2) print(0xFB + 0b10) # Output: 13 print(0o15) Khi bạn chạy chương trình này thì sẽ cho kết quả như sau: Chúng ta có thể chuyển đổi một từ cơ số này sang cơ số khác. Điều này còn được gọi là chuyển đổi cơ số. Ví dụ: Các phép toán như phép cộng, phép trừ số nguyên sẽ tự động chuyển đổi cơ số sang kiểu Như ví dụ trên bạn thấy 1 là kiểu số nguyên, 2.0 là kiểu số động và khi thực hiện phép toán thì kết quả sẽ mang kiểu số động. Bạn cũng có thể sử dụng các hàm dựng sẵn như >>> int(2.3) 2 >>> int(-2.8) -2 >>> float(5) 5.0 >>> complex('3+5j') (3+5j) 2. Số thập phân trong PythonLớp built-in trong Python có thể thực hiện một vài phép toán khiến chúng ta ngạc nhiên. Chúng ta đều biết rằng tổng của 1.1 và 2.2 là 3.3, tuy nhiên khi sử dụng toán tử so sánh bằng (==) thì điều đó là không đúng trong Python. >>> (1.1 + 2.2) == 3.3 False Chúng ta đang sai ở đâu?Nó chỉ ra rằng các số dấu phẩy động được triển khai trong phần cứng máy tính dưới dạng phân số nhị phân, vì máy tính chỉ hiểu nhị phân (0 và 1). Vì lý do này, hầu hết các phân số thập phân mà chúng ta biết không thể được lưu trữ chính xác trong máy tính. Hãy lấy một ví dụ. Chúng ta không thể biểu thị phân số 1/3 dưới dạng số thập phân. Điều này sẽ cung cấp cho 0.33333333 ... dài vô hạn và chúng ta chỉ có thể ước chừng nó. Hóa ra phân số thập phân 0,1 sẽ dẫn đến phân số nhị phân dài vô hạn 0,000110011001100110011 ... và máy tính của chúng ta chỉ lưu trữ một số hữu hạn của nó. Điều này sẽ chỉ xấp xỉ 0,1 nhưng không bao giờ bằng nhau. Do đó, đó là giới hạn của phần cứng máy tính của chúng tôi và không phải là lỗi trong Python. >>> 1.1 + 2.2 3.3000000000000003 Để khắc phục vấn đề này, chúng ta có thể sử dụng mô-đun decimal. import decimal # Output: 0.1 print(0.1) # Output: Decimal('0.1000000000000000055511151231257827021181583404541015625') print(decimal.Decimal(0.1)) Mô-đun này được sử dụng khi chúng ta muốn thực hiện các phép tính thập phân như đã học ở trường. Chúng ta biết 25,50 kg chính xác hơn 25,5 kg vì nó có hai chữ số thập phân đáng kể so với một. from decimal import Decimal as D # Output: Decimal('3.3') print(D('1.1') + D('2.2')) # Output: Decimal('3.000') print(D('1.2') * D('2.50')) Chúng ta có thể hỏi tại sao không thực hiện Decimal mỗi lần, thay vì float? Lý do chính là hiệu quả, float luôn luôn nhanh hơn. 3. Khi nào sử dụng Decimal thay vì floatChúng ta thường sử dụng Decimal trong các trường hợp sau.
4. Phân sốPython cung cấp các hoạt động liên quan đến số phân số thông qua mô-đun Fraction của nó. Chúng ta có thể tạo các đối tượng Fraction theo nhiều cách khác nhau. import fractions # Output: 3/2 print(fractions.Fraction(1.5)) # Output: 5 print(fractions.Fraction(5)) # Output: 1/3 print(fractions.Fraction(1,3)) Trong khi tạo phân số từ kiểu float chúng ta có thể nhận được một số kết quả bất thường. Điều này là do biểu diễn số dấu phẩy động nhị phân không hoàn hảo như đã thảo luận trong phần trước. May mắn thay, phân số cho phép chúng ta khởi tạo bằng chuỗi, đây là các tùy chọn ưa thích khi sử dụng số thập phân. import fractions # As float # Output: 2476979795053773/2251799813685248 print(fractions.Fraction(1.1)) # As string # Output: 11/10 print(fractions.Fraction('1.1')) Kiểu dữ liệu này hỗ trợ tất cả các toán tử cơ bản. Dưới đây là một vài ví dụ. from fractions import Fraction as F # Output: 2/3 print(F(1,3) + F(1,3)) # Output: 6/5 print(1 / F(5,6)) # Output: False print(F(-3,10) > 0) # Output: True print(F(-3,10) < 0) 5. Các hàm toán họcPython cung cấp các mô-đun như math và random để thực hiện các phép toán khác nhau như lượng giác, logarit, xác suất và thống kê, v.v. Module math import math # Output: 3.141592653589793 print(math.pi) # Output: -1.0 print(math.cos(math.pi)) # Output: 22026.465794806718 print(math.exp(10)) # Output: 3.0 print(math.log10(1000)) # Output: 1.1752011936438014 print(math.sinh(1)) # Output: 720 print(math.factorial(6)) Module random import random # Output: 16 print(random.randrange(10,20)) x = ['a', 'b', 'c', 'd', 'e'] # Get random choice print(random.choice(x)) # Shuffle x random.shuffle(x) # Print the shuffled x print(x) # Print random element print(random.random()) 6. Lời kếtNhư vậy là mình đã giới thiệu xong toàn bộ kiến thức cơ bản về xử lý number trong Python, có rất nhiều hàm bổ trợ cho number và mình sẽ trình bày nó ở một bài khác. Chúc bạn học tốt1 |