Python 3

Toán học trong Python - Boolean, float và integer

Đăng bởi - Ngày 19-04-2018

Boolean

Hầu hết tất cả ngôn ngữ lập trình đều hỗ trợ kiểu boolean này, còn được gọi là kiểu "Luận Lý". Bạn có thể bắt gặp boolean ở bất cứ đâu, như trong toán học, đời sống hằng ngày, khi bạn cần quyết định một điều gì đó. Vậy boolean là gì?

Nói cho đơn giản, dễ hiểu thì boolean là kiểu chỉ có 2 giá trị là "đúng" và "sai". Trong python có hai hằng số là TrueFalse, có thể dùng để gán giá trị luận lý trực tiếp. Bạn có thể kiểm tra một biểu thức đúng hoặc sai. Bình thường bạn có thể bắt gặp boolean trong cặp if - else, được gọi là boolean context.

>>> toi = 17 #1
>>> if toi < 18: #2
...     raise BaseException('Bạn không đủ tuổi để xem nội dung này') #3
...
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
BaseException: Bạn không đủ tuổi để xem nội dung này

Trong đoạn ví dụ trên chúng ta sẽ kiểm tra xem người sử dụng có đủ tuổi hay không, nếu không sẽ tạo một BaseException báo cho người dùng biết không thể xem nội dung đã ẩn

  1. Ta tạo 1 biến là toi có giá trị là kiểu integer 17
  2. Ta dùng if để so sánh, toi và 18. Nếu toi > 18 thì người dùng được phép xem nội dung, ngược lại toi < 18 sẽ không được xem. Kết quả của toi < 18 luôn luôn là kiểu boolean.
  3. BaseException là một built-in exception trong python. Ta có các kiểu exception khác nhau cho phép ta bắt các lỗi khác nhau như ValueError, HttpError.. Chúng ta sẽ thảo luận về exception trong những bài sau
>>> toi < 17
False
>>> toi == 17
True
>>> toi > 17
False

Kết quả giữa tôi và 17 luôn luôn là boolean

Ngoài ra, bạn còn có thể xem boolean như số, True là 1 và False là 0

>>> True + True
2
>>> True - False
1
>>> True * False
0
>>> True / False
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero

Numbers

Số học trong python rất linh động, Python cho chúng ta rất nhiều lựa chọn. Có hai kiểu được hỗ trợ trong python là integerfloatvà bạn không cần phải khai báo kiểu của nó. Python sẽ tự nhận diện kiểu interger hoặc float thông qua dấu "."

>>> type(8) #1      
<class 'int'>         
>>> isinstance(7, int) #2
True                  
>>> 1 + 1 #3
2                     
>>> 1 + 3.0 #4      
4.0                   
>>> type(4.0)
<class 'float'>       
>>>                   
  1. Function type() thật sự rất hữu ích, bạn có thể dùng type() để kiểm tra bất kỳ giá trị hoặc biến nào. Như bạn thấy trong ví dụ trên, type(8) là int
  2. Cũng như type(), bạn có thể dùng function isinstance để kiểm tra đối tượng có thuộc kiểu dữ liệu mình cần hay không. Kết quả trả về là boolean
  3. Một interger cộng một interger sẽ cho ra kết quả là integer
  4. Bất kỳ một phép toán nào giữa interger và float sẽ cho ra kết quả là float

Chuyển đổi kiểu dữ liệu giữa integer và float

Như bạn thấy ở ví dụ trên, khi thực hiện phép toán giữa interger và float sẽ cho ra kết quả là float. Bạn cũng có thể chủ động chuyển đổi một số sang kiểu float hoặc integer

>>> float(5) #1       
5.0                       
>>> int(4.0) #2             
4                         
>>> int(8.5) #3             
8                         
>>> int(-2.5) #4             
-2                        
>>> 2.12345678901234567890 #5
2.1234567890123457        
>>> type(1000000000000000) #6
<class 'int'>             
  1. Để chuyển một số interger sang float bạn dùng float()
  2. Ngược lại, bạn dùng int() để convert một số float sang interger
  3. function int() không làm tròn số, chỉ cắt bỏ phần thập phân
  4. Khi bạn dùng int() cho một số âm, int() sẽ cắt bỏ số ngược về 0.
  5. Số float sau dấu chấm chỉ có thể dùng được 15 số
  6. Số interger có thể lớn bao nhiêu tùy bạn

Lưu ý: Trong python 2 chia interger ra làm hai kiểu là int và long. Kiểu int bị giới hạn bởi sys.maxint, tùy vào nền tảng mà số này sẽ thay đổi nhưng thường sẽ là 232- 1. Python 3 chỉ có một kiểu integer giống như kiểu long từ python 2

Các phép toán dùng trong python

>>> 13 / 2   #1
6.5          
>>> 13 // 2  #2
6            
>>> -13 // 2 #3
-7           
>>> 13.0 // 2 #4
6.0          
>>> 13 ** 2  #5
169          
>>> 13 % 2   #6
1            
  1. Toán tử / sẽ trả về kết quả float ngay cả khi số chia và số bị chia đều là integer
  2. Toán tử // là 1 kiểu khác của phép chia interger. Khi phép chia có thể thực hiện và trả về kết quả, bạn có thể nghĩ đơn giản là kết quả đã bị cắt bỏ số thập phân (không phải làm tròn số). Bạn nên cẩn thận khi dùng toán tử này
  3. Khi số bị chia là số âm, toán tử // sẽ làm tròn lên đến số integer gần nhất. Nói theo kiểu toán học thì kết quả được làm tròn xuống bởi vì -7 nhỏ hơn -6, nhưng nó có thể làm bạn gặp khó khăn nếu như bạn cần nó cắt đến -6
  4. Toán tử // không phải lúc nào cũng trả về kết quả là integer. Kể cả khi nó là một số hoặc số thập phân thì nó vẫn làm tròn đến số integer gần nhất, nhưng tất nhiên kiểu kết quả trả về là float
  5. Toán tử ** nói cho dễ hiểu là lũy thừa. 132= 169
  6. Toán tử % sẽ trả về số dư sau khi thực hiện phép chia. 13 chia 2 ra 6 dư 1

Trong python 2, phép chia thường sẽ là số integer, nhưng bạn có thể ép kết quả ra kiểu float bằng các cho một số là float trong code. Trong python 3, toán tử / luôn luôn là kiểu float

Phân số

Python không chỉ giới hạn ở các phép tính cơ bản giữa integer và float, mà nó còn có thể giải phân số nữa. Nghe cũng hay hay nhỉ, nếu bạn học tới bài này và còn học trung học cơ sở thì thử áp dụng vào để giải bài tập nha :D

>>> import fractions #1
>>> x = fractions.Fraction(2, 3)   #2                                                                 
>>> x                                                                                                
Fraction(2, 3)                                                                                       
>>> x * 2     #3                                                                                       
Fraction(4, 3)                                                                                       
>>> fractions.Fraction(6, 4) #4                                                                        
Fraction(3, 2)                                                                                       
>>> fractions.Fraction(0, 0) #5                                                                        
Traceback (most recent call last):                                                                   
  File "<stdin>", line 1, in <module>                                                                
  File "C:\Users\Yu\AppData\Local\Programs\Python\Python36-32\lib\fractions.py", line 178, in __new__
    raise ZeroDivisionError('Fraction(%s, 0)' % numerator)                                           
ZeroDivisionError: Fraction(0, 0)                                                                    
  1. Để tính được phân số bạn cần import module fractions.
  2. Bạn sẽ cần tạo đối tượng phân số thông qua object Fraction và truyền vào tử số và mẫu số.
  3. Bạn sử dụng các toán tử với phân số. Kết quả trả về sẽ là 1 object Fraction mới. 2 * (2 / 3) = (4 / 3)
  4. Object Fractionsẽ tự động chia phân số. (6 / 4) = (3 / 2)
  5. Python không cho phép tạo phân số với mẫu số 0

Lượng giác

Ngoài phân số ra, bạn cũng có thể làm một số phép tính lượng giác cơ bản.

>>> import math
>>> math.pi #1
3.141592653589793
>>> math.sin(math.pi / 2) #2
1.0
>>> math.tan(math.pi / 4) #3
0.9999999999999999
  1. Module math có hằng số cho só π, tỷ số chu vi một vòng tròn với đường kính của nó.
  2. Module math có tất cả những function lượng giác cơ bản, bao gồm sin(), cos(), tan(), asin()
  3. Lưu ý, tuy nhiên python không có độ chính xác vô hạn. tan(π / 4) nên trả về kết quả là 1.0 chứ không phải là 0.9999999999999999

Các thẻ
Bài viết liên quan
String trong python

Ngày 21 Tháng 4, 2018

Các toán tử thường dùng trong Set

Ngày 15 Tháng 4, 2018

Giới thiệu về list

Ngày 09 Tháng 4, 2018

0 nhận xét

    Không có nhận xét nào

Nhận xét mới

bắt buộc

yu.kusanagi
Từ Anh Vũ
Hồ Chí Minh, Việt Nam

Xin chào, tôi tên Từ Anh Vũ và là 1 free lancer developer và ngôn ngữ code yêu thích của tôi là Python và PHP. Công việc chủ yếu là viết các module cho magento, magento2, wordpress, django, flask và các framework khác
Nếu bạn muốn trao đổi với tôi hoặc muốn thuê tôi làm việc cho dự án của bạn, hãy liên hệ với tôi

ĐĂNG KÝ NHẬN BÀI MỚI

Tweets gần đây
Tác giả
Feeds
RSS / Atom
-->

Đăng ký nhận bài viết mới tại hocpython.com?

Hãy đăng ký nhận bài viết mới tại hocpython.com để:

  • Không bỏ lỡ các bài tutorials mới tại hocpython.com!
  • Cập nhật các công nghệ mới trong python!

Chỉ cần điền email và họ tên của bạn và nhấn Đăng ký nhận tin!