Skip to main content

Tính toán bằng Python - phần 2

Bài trước đã giới thiệu về các phép tính tiểu học (cộng trừ nhân chia), bài này sẽ giới thiệu các phép tính phổ thông có vẻ cao cấp hơn như phép luỹ thừa, chia lấy dư, tính toán số phức.

Phép luỹ thừa

Phép toán luỹ thừa, hay mũ, tiếng Anh gọi là "power". 2 mũ 3 trong tiếng Anh là "2 to the power of 3". Phép mũ trong Python sử dụng ký hiệu **, KHÔNG PHẢI ký hiệu ^.
>>> 2 ** 7
128
>>> 2 ** 8
256
>>> 10 ** 7
10000000
>>> 2 ** 1000
10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
Với Python, độ lớn của số là tuỳ ý, không có giới hạn. Nếu bạn còn chưa quên toán, thì sẽ biết rằng phép căn bậc 2 (square root) thực chất là mũ 1/2, căn bậc 3 (cube root) là mũ 1/3,...
>>> 4 ** (1/2)
2.0
>>> 27 ** (1/3)
3.0
>>> 2 ** (1/2)
1.4142135623730951
>>> 4 ** 2.0
16.0
Chú ý, giống các phép toán khác, phép mũ khi thực hiện với float ở phần số hay phần mũ đều trả về kết quả kiểu float.

Phép chia lấy dư

Phép chia lấy dư (modulo hay viết tắt là mod) trong Python được biểu diễn bằng dấu %.

>>> 5 % 2
1
>>> 10 % 7
3
Sử dụng phép chia lấy dư, ta có thể kiểm tra một số có là bội của số khác nếu nó chia lấy dư được kết quả là 0:
>>> 100 % 25 # 100 = 25 * 4
0
Ứng dụng phổ biến thường gặp là kiểm tra một số là chẵn (even) hay lẻ (odd):
>>> 7 % 2
1 # vậy 7 là lẻ
Do số dư luôn luôn nhỏ hơn số chia (7 là số bị chia, 2 là số chia, 1 là số dư), phép chia dư được sử dụng khi bài toán có quy luật tuần hoàn. Cho đề bài:
Biết từ nhà Mít sang nhà Chuối có 9 bậc (đánh số từ 1-9), coi nhà Mít là bậc 0 và nhà Chuối là bậc 10. Biết mỗi 1 bước đi 1 bậc, hỏi nếu Mít bắt đầu từ nhà mình, đi theo đường ấy, đến nhà Chuối thì lại quay về, thì sau 1235789 bước, Mít đang ở bậc số mấy?
[ 0] [ 1] [ 2] [ 3] [ 4] [ 5] [ 6] [ 7] [ 8] [ 9] [10]
     [19] [18] [17] [16] [15] [14] [13] [12] [11]
Ta có thể giải bài toán này bằng cách đếm lần lượt, cho đến khi hết 1235789 bước thì sẽ biết Mít đang ở phương trời nào, hoặc chỉ cần dùng phép chia dư để loại bỏ những phần tuần hoàn của bài toán. Do Mít đi 20 bước (10 bước đi, 10 bước về) sẽ trở về bậc số 0. Vậy cứ chia lấy dư cho 20, ta thu được số bước lẻ còn lại.
Sau 21 bước, Mít đang ở bậc số 21 % 20 == 1. Sau 31 bước, Mít đang ở bậc số 31 % 20 == 11, tức sau 1 bước trên đường về hay ở bậc số 9. Sau 1235789, Mít ở bậc
>>> 1235789 % 20
9
Phép modulo còn có ứng dụng quan trọng trong ngành mật mã học (cryptography), hệ thống bảo mật RSA có sử dụng phép modulo, xem thêm tại wikipedia.

Phép chia lấy phần nguyên

Phép chia chỉ lấy phần nguyên (floor division) sử dụng ký hiệu //:
>>> 10 // 7
1

Số phức

Số phức (được học trong chương trình toán cấp 3) cũng được hỗ trợ bởi Python, phần ảo được ký hiệu bằng chữ j:
>>> 1 + 5j + 2 + 7j
(3+12j)
Xem thêm tại: python tutorial
HVN at FAMILUG dot ORG Theo hướng dẫn Python tại Pymi.vn

Comments

Popular posts from this blog

Tài liệu và hướng dẫn học Python

Để tiết kiệm thời gian, tốt nhất là đi học PyMI Updated: 130617 Sau đây là các tài liệu khuyên dùng: Vì nhiều lý do, nên học python2.7 tại thời điểm hiện tại (giờ là tháng 6/2013 - muốn biết tại sao thì tự tìm hiểu) python 3.5+ (giờ là tháng 2/2017) Chuẩn bị: 1. biết bật tắt máy 2. biết cài python 3. tập gõ 10 ngón - gõ 2 ngón hay 1 ngón cũng không sao, nhưng 10 ngón là cách dễ nhất để gõ nhanh nhất. Tài liệu - Nên dùng tài liệu tại trang chủ của Python làm chính, tham khảo thêm các tài liệu khác tại http://www.familug.org/2016/12/free-ebook.html Căn bản, mới học 1.1 Python PyMI.vn https://pymi.vn/tutorial/ 1.2. Python offical tutorial kết hợp làm bài tập trên HackerRank  (đề bài bằng tiếng Anh, nhưng Google translate 1 lúc cũng ra vì có nhiều ví dụ mẫu đi kèm). Học viên của Pymi.vn có rất nhiều học viên đã tự học với Learn Python the hard way nhưng chưa thấy ai thành công cả. Hai link dưới nên đọc sau khi đã nắm được những phần cơ bản của ngôn ngữ pytho...

The PyMiers

New FAMILUG