đã đăng. 2019-09-16 / Thẻ. con trăn
tiếng riu ríu
Trong Python, bạn có thể tính thương với
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
71 và phần còn lại với >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
72q = 10 // 3
mod = 10 % 3
print[q, mod]
# 3 1
nguồn.
Hàm dựng sẵn
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
73 rất hữu ích khi bạn muốn cả thương và số dư>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
74 trả về một tuple >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
75Bạn có thể giải nén và gán cho từng biến
- Giải nén một bộ và liệt kê trong Python
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
nguồn.
Tất nhiên, bạn có thể nhận nó dưới dạng một tuple
answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
nguồn.
Liên kết được tài trợ
Đăng lại
tiếng riu ríuthể loại liên quan
- con trăn
Những bài viết liên quan
- gấu trúc. Lặp lại DataFrame với vòng lặp "for"
- Định nghĩa và gọi hàm trong Python [def, return]
- Trăn, Gối. Xoay hình ảnh
- Kiểm tra và thêm đường dẫn tìm kiếm mô-đun với sys. đường dẫn trong Python
- Kiểm tra xem một chuỗi là số, chữ cái, chữ số hay ASCII
- Quay video từ máy ảnh/tệp bằng OpenCV trong Python
- Thêm phần đệm vào hình ảnh với Python, Gối
- "inf" cho vô cực trong Python
- Khởi tạo danh sách với kích thước và giá trị đã cho trong Python
- Cách trả về nhiều giá trị từ một hàm trong Python
- Kiểm tra xem các số dấu phẩy động có gần bằng Python không [math. isclose]
- NumPy. Xoay mảng [np. thối90]
- Cách sử dụng tham số chính trong Python [được sắp xếp, tối đa, v.v. ]
- gấu trúc. Chuyển đổi khung dữ liệu [hoán đổi hàng và cột]
- Định dạng chuỗi và số bằng format[] trong Python
Python hỗ trợ nhiều loại mà bạn có thể sử dụng khi làm việc với các số trong mã của mình. Một trong những toán tử này là toán tử modulo [
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
0], trả về phần còn lại của phép chia hai sốTrong hướng dẫn này, bạn sẽ học
- Làm thế nào modulo hoạt động trong toán học
- Cách sử dụng toán tử modulo Python với các kiểu số khác nhau
- Cách Python tính toán kết quả của phép toán modulo
- Cách ghi đè
1 trong các lớp của bạn để sử dụng chúng với toán tử modulo>>> 13.3 % 1.1 0.09999999999999964 >>> import math >>> math.fmod[13.3, 1.1] 0.09999999999999964
- Cách sử dụng toán tử modulo Python để giải quyết các vấn đề trong thế giới thực
Toán tử modulo Python đôi khi có thể bị bỏ qua. Nhưng hiểu rõ về toán tử này sẽ cung cấp cho bạn một công cụ vô giá trong vành đai công cụ Python của bạn
Tiền thưởng miễn phí. Nhấp vào đây để nhận Bảng cheat Python và tìm hiểu kiến thức cơ bản về Python 3, như làm việc với các kiểu dữ liệu, từ điển, danh sách và hàm Python
Modulo trong Toán học
Thuật ngữ modulo xuất phát từ một nhánh toán học gọi là số học modulo. Số học mô-đun xử lý số học số nguyên trên trục số tròn có một bộ số cố định. Tất cả các phép toán số học được thực hiện trên dòng số này sẽ bao quanh khi chúng đạt đến một số nhất định được gọi là mô đun
Một ví dụ cổ điển về modulo trong số học modulo là đồng hồ mười hai giờ. Đồng hồ mười hai giờ có một bộ giá trị cố định, từ 1 đến 12. Khi đếm trên đồng hồ mười hai giờ, bạn đếm đến mô đun 12 rồi quay lại 1. Đồng hồ mười hai giờ có thể được phân loại là “modulo 12”, đôi khi được rút ngắn thành “mod 12. ”
Toán tử modulo được sử dụng khi bạn muốn so sánh một số với mô đun và lấy số tương đương bị ràng buộc trong phạm vi của mô đun
Ví dụ: giả sử bạn muốn xác định sau 8 giờ sẽ là mấy giờ. 00 một. m. Trên đồng hồ mười hai giờ, bạn không thể cộng 9 với 8 một cách đơn giản vì bạn sẽ nhận được 17. Bạn cần lấy kết quả, 17 và sử dụng
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
2 để nhận giá trị tương đương trong ngữ cảnh mười hai giờ8 o'clock + 9 = 17 o'clock
17 mod 12 = 5
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
3 trả về >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
4. Điều này có nghĩa là chín giờ qua 8. 00 một. m. là 5. 00 giờ. m. Bạn xác định điều này bằng cách lấy số >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
5 và áp dụng nó vào ngữ cảnh >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
6Bây giờ, nếu bạn nghĩ về nó,
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
5 và >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
4 tương đương nhau trong ngữ cảnh >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
6. Nếu bạn nhìn vào kim giờ ở vị trí 5. 00 và 17. 00, nó sẽ ở cùng một vị trí. Số học mô-đun có một phương trình để mô tả mối quan hệ nàyq, mod = divmod[10, 3]
print[q, mod]
# 3 1
4Phương trình này viết “
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
50 và q, mod = divmod[10, 3]
print[q, mod]
# 3 1
51 đồng dư theo modulo q, mod = divmod[10, 3]
print[q, mod]
# 3 1
52. ” Điều này có nghĩa là q, mod = divmod[10, 3]
print[q, mod]
# 3 1
50 và q, mod = divmod[10, 3]
print[q, mod]
# 3 1
51 bằng nhau trong q, mod = divmod[10, 3]
print[q, mod]
# 3 1
55 vì chúng có cùng số dư khi chia cho q, mod = divmod[10, 3]
print[q, mod]
# 3 1
52. Trong phương trình trên, q, mod = divmod[10, 3]
print[q, mod]
# 3 1
52 là mô đun của cả q, mod = divmod[10, 3]
print[q, mod]
# 3 1
50 và q, mod = divmod[10, 3]
print[q, mod]
# 3 1
51. Sử dụng các giá trị >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
5 và >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
4 từ trước, phương trình sẽ như thế nàyanswer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
7Điều này đọc “
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
5 và >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
4 đồng dư theo modulo q, mod = divmod[10, 3]
print[q, mod]
# 3 1
404. ” >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
5 và >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
4 có cùng số dư, >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
4, khi chia cho q, mod = divmod[10, 3]
print[q, mod]
# 3 1
404. Vì vậy, trong >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
6, các số >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
5 và >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
4 là tương đươngBạn có thể xác nhận điều này bằng cách sử dụng phép chia
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
8Cả hai phép toán đều có cùng số dư,
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
4, vì vậy chúng tương đương theo modulo q, mod = divmod[10, 3]
print[q, mod]
# 3 1
404Bây giờ, điều này có vẻ giống như rất nhiều phép toán đối với toán tử Python, nhưng việc có kiến thức này sẽ giúp bạn chuẩn bị để sử dụng toán tử modulo trong các ví dụ sau trong hướng dẫn này. Trong phần tiếp theo, bạn sẽ xem xét kiến thức cơ bản về cách sử dụng toán tử modulo trong Python với các kiểu số
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
414 và q, mod = divmod[10, 3]
print[q, mod]
# 3 1
415Loại bỏ các quảng cáoKhái niệm cơ bản về toán tử Modulo của Python
Toán tử modulo, giống như các toán tử số học khác, có thể được sử dụng với các kiểu số và. Như bạn sẽ thấy sau này, nó cũng có thể được sử dụng với các loại khác như
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
418, q, mod = divmod[10, 3]
print[q, mod]
# 3 1
419 và các lớp của riêng bạnToán Tử Modulo Với q, mod = divmod[10, 3]
print[q, mod]
# 3 1
414
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
Hầu hết thời gian bạn sẽ sử dụng toán tử modulo với số nguyên. Toán tử modulo, khi được sử dụng với hai số nguyên dương, sẽ trả về phần còn lại của phép chia Euclide tiêu chuẩn
>>>
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
6Hãy cẩn thận. Giống như với toán tử chia [
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
421], Python sẽ trả về một giá trị q, mod = divmod[10, 3]
print[q, mod]
# 3 1
422 nếu bạn cố gắng sử dụng toán tử modulo với ước số là q, mod = divmod[10, 3]
print[q, mod]
# 3 1
423>>>
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
0Tiếp theo, bạn sẽ xem cách sử dụng toán tử modulo với một
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
415Toán Tử Modulo Với q, mod = divmod[10, 3]
print[q, mod]
# 3 1
415
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
Tương tự như
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
414, toán tử modulo được sử dụng với q, mod = divmod[10, 3]
print[q, mod]
# 3 1
415 sẽ trả về phần còn lại của phép chia, nhưng dưới dạng giá trị q, mod = divmod[10, 3]
print[q, mod]
# 3 1
415>>>
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
6Một cách thay thế cho việc sử dụng
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
415 với toán tử modulo là sử dụng q, mod = divmod[10, 3]
print[q, mod]
# 3 1
418 để thực hiện các thao tác modulo trên các giá trị q, mod = divmod[10, 3]
print[q, mod]
# 3 1
415>>>
8 o'clock + 9 = 17 o'clock
17 mod 12 = 5
0Các tài liệu chính thức của Python về toán tử modulo của Python khi làm việc với các giá trị
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
415 do cách mà q, mod = divmod[10, 3]
print[q, mod]
# 3 1
418 tính toán kết quả của phép toán modulo. Nếu bạn đang sử dụng toán hạng âm, thì bạn có thể thấy các kết quả khác nhau giữa q, mod = divmod[10, 3]
print[q, mod]
# 3 1
435 và q, mod = divmod[10, 3]
print[q, mod]
# 3 1
436. Bạn sẽ khám phá cách sử dụng toán tử modulo với toán hạng âm chi tiết hơn trong phần tiếp theoCũng giống như các toán tử số học khác, toán tử modulo và
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
418 có thể gặp phải các vấn đề về làm tròn và độ chính xác khi xử lý số học dấu phẩy động>>>
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
Nếu việc duy trì độ chính xác của dấu phẩy động là quan trọng đối với ứng dụng của bạn, thì bạn có thể sử dụng toán tử modulo với
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
419. Bạn sẽ nhìn vào cái nàyToán tử modulo với toán hạng âm
Tất cả các hoạt động modulo mà bạn đã thấy cho đến thời điểm này đã sử dụng hai toán hạng dương và trả về kết quả có thể dự đoán được. Khi một toán hạng âm được giới thiệu, mọi thứ trở nên phức tạp hơn
Hóa ra, cách máy tính xác định kết quả của phép toán modulo với toán hạng âm để lại sự mơ hồ về việc liệu phần còn lại sẽ lấy dấu của số bị chia [số bị chia] hay dấu của số chia [số bị chia]. . Các ngôn ngữ lập trình khác nhau xử lý điều này khác nhau
Ví dụ, trong JavaScript, phần dư sẽ lấy dấu của số bị chia
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
5Phần còn lại trong ví dụ này,
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
439, là số dương vì nó mang dấu của số bị chia, q, mod = divmod[10, 3]
print[q, mod]
# 3 1
440. Trong Python và các ngôn ngữ khác, phần còn lại sẽ lấy dấu của số chiaq, mod = divmod[10, 3]
print[q, mod]
# 3 1
40Ở đây bạn có thể thấy rằng phần dư, ________ 1441, lấy dấu của số chia, ________ 1442
Bạn có thể thắc mắc tại sao phần còn lại trong JavaScript là
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
439 và phần còn lại trong Python là q, mod = divmod[10, 3]
print[q, mod]
# 3 1
441. Điều này liên quan đến cách các ngôn ngữ khác nhau xác định kết quả của phép toán modulo. Các ngôn ngữ trong đó phần còn lại mang dấu hiệu của số bị chia sử dụng phương trình sau để xác định phần còn lạiq, mod = divmod[10, 3]
print[q, mod]
# 3 1
41Có ba biến phương trình này
445 là phần còn lạiq, mod = divmod[10, 3] print[q, mod] # 3 1
50 là cổ tứcq, mod = divmod[10, 3] print[q, mod] # 3 1
52 là số chiaq, mod = divmod[10, 3] print[q, mod] # 3 1
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
448 trong phương trình này có nghĩa là nó sử dụng phép chia cắt ngắn, sẽ luôn làm tròn một số âm về 0. Để rõ hơn, hãy xem các bước của phép tính modulo bên dưới, sử dụng q, mod = divmod[10, 3]
print[q, mod]
# 3 1
440 làm cổ tức và q, mod = divmod[10, 3]
print[q, mod]
# 3 1
442 làm ước sốq, mod = divmod[10, 3]
print[q, mod]
# 3 1
42Tại đây, bạn có thể thấy cách một ngôn ngữ như JavaScript nhận được phần còn lại
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
439. Python và các ngôn ngữ khác trong đó phần còn lại lấy dấu của số chia sử dụng phương trình sauq, mod = divmod[10, 3]
print[q, mod]
# 3 1
43q, mod = divmod[10, 3]
print[q, mod]
# 3 1
452 trong phương trình này có nghĩa là nó sử dụng phép chia sàn. Với số dương, phép chia sàn sẽ trả về kết quả giống như phép chia cụt. Nhưng với số âm, phép chia sàn sẽ làm tròn kết quả xuống, cách xa số 0q, mod = divmod[10, 3]
print[q, mod]
# 3 1
44Ở đây bạn có thể thấy rằng kết quả là
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
441Bây giờ bạn đã hiểu sự khác biệt trong phần còn lại đến từ đâu, bạn có thể tự hỏi tại sao điều này lại quan trọng nếu bạn chỉ sử dụng Python. Hóa ra, không phải tất cả các phép toán modulo trong Python đều giống nhau. Mặc dù modulo được sử dụng với các loại
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
414 và q, mod = divmod[10, 3]
print[q, mod]
# 3 1
415 sẽ lấy dấu của số chia, các loại khác sẽ khôngBạn có thể xem một ví dụ về điều này khi so sánh kết quả của
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
456 và q, mod = divmod[10, 3]
print[q, mod]
# 3 1
457>>>
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
45q, mod = divmod[10, 3]
print[q, mod]
# 3 1
418 lấy dấu của số bị chia bằng cách sử dụng phép chia cắt ngắn, trong khi đó q, mod = divmod[10, 3]
print[q, mod]
# 3 1
415 sử dụng dấu của số chia. Ở phần sau của hướng dẫn này, bạn sẽ thấy một loại Python khác sử dụng dấu hiệu của số bị chia, q, mod = divmod[10, 3]
print[q, mod]
# 3 1
419Loại bỏ các quảng cáoToán tử Modulo và q, mod = divmod[10, 3]
print[q, mod]
# 3 1
461
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
Python có chức năng tích hợp sẵn, sử dụng bên trong toán tử modulo.
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
461 nhận hai tham số và trả về một bộ chứa kết quả phân chia sàn và modulo bằng cách sử dụng các tham số được cung cấpDưới đây là một ví dụ về việc sử dụng
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
461 với q, mod = divmod[10, 3]
print[q, mod]
# 3 1
465 và >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
4>>>
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
46Bạn có thể thấy rằng
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
467 trả về bộ dữ liệu q, mod = divmod[10, 3]
print[q, mod]
# 3 1
468. q, mod = divmod[10, 3]
print[q, mod]
# 3 1
469 là kết quả của sự phân chia tầng của q, mod = divmod[10, 3]
print[q, mod]
# 3 1
465 và >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
4. q, mod = divmod[10, 3]
print[q, mod]
# 3 1
439 là kết quả của q, mod = divmod[10, 3]
print[q, mod]
# 3 1
465 modulo >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
4Dưới đây là một ví dụ trong đó tham số thứ hai là một số âm. Như đã thảo luận trong phần trước, khi toán tử modulo được sử dụng với một
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
414, phần còn lại sẽ lấy dấu của ước số>>>
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
47Bây giờ bạn đã có cơ hội thấy toán tử modulo được sử dụng trong một số trường hợp, điều quan trọng là hãy xem cách Python xác định mức độ ưu tiên của toán tử modulo khi được sử dụng với các toán tử số học khác
Ưu tiên toán tử Modulo
Giống như các toán tử Python khác, có các quy tắc cụ thể cho toán tử modulo xác định. Toán tử modulo [
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
0] có cùng mức ưu tiên như toán tử nhân [q, mod = divmod[10, 3]
print[q, mod]
# 3 1
477], chia [q, mod = divmod[10, 3]
print[q, mod]
# 3 1
421] và chia sàn [q, mod = divmod[10, 3]
print[q, mod]
# 3 1
479]Hãy xem một ví dụ về mức độ ưu tiên của toán tử modulo bên dưới
>>>
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
48Cả toán tử nhân và modulo đều có cùng mức độ ưu tiên, vì vậy Python sẽ đánh giá chúng từ trái sang phải. Sau đây là các bước thực hiện thao tác trên
480 được đánh giá, dẫn đếnq, mod = divmod[10, 3] print[q, mod] # 3 1
481q, mod = divmod[10, 3] print[q, mod] # 3 1
482 được đánh giá, dẫn đếnq, mod = divmod[10, 3] print[q, mod] # 3 1
483q, mod = divmod[10, 3] print[q, mod] # 3 1
483 được đánh giá, dẫn đếnq, mod = divmod[10, 3] print[q, mod] # 3 1
485q, mod = divmod[10, 3] print[q, mod] # 3 1
Nếu bạn muốn ghi đè thứ tự ưu tiên của các toán tử khác, thì bạn có thể sử dụng dấu ngoặc đơn để bao quanh thao tác mà bạn muốn được đánh giá trước
>>>
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
49Trong ví dụ này,
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
486 được đánh giá đầu tiên, tiếp theo là q, mod = divmod[10, 3]
print[q, mod]
# 3 1
480 và cuối cùng là q, mod = divmod[10, 3]
print[q, mod]
# 3 1
488, bằng với q, mod = divmod[10, 3]
print[q, mod]
# 3 1
489Toán tử Modulo Python trong thực tế
Bây giờ bạn đã tìm hiểu những kiến thức cơ bản về toán tử modulo trong Python, bạn sẽ xem xét một số ví dụ về cách sử dụng toán tử này để giải quyết các vấn đề lập trình trong thế giới thực. Đôi khi, có thể khó xác định khi nào nên sử dụng toán tử modulo trong mã của bạn. Các ví dụ dưới đây sẽ cho bạn ý tưởng về nhiều cách nó có thể được sử dụng
Cách kiểm tra xem một số là chẵn hay lẻ
Trong phần này, bạn sẽ thấy cách bạn có thể sử dụng toán tử modulo để xác định xem một số là chẵn hay lẻ. Sử dụng toán tử modulo có modulo là ________ 1439, bạn có thể kiểm tra bất kỳ số nào để xem nó có chia hết cho ________ 1439 không. Nếu chia hết thì là số chẵn
Hãy xem
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
492 để kiểm tra xem tham số q, mod = divmod[10, 3]
print[q, mod]
# 3 1
493 có chẵn khônganswer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
70Ở đây
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
494 sẽ bằng q, mod = divmod[10, 3]
print[q, mod]
# 3 1
423 nếu q, mod = divmod[10, 3]
print[q, mod]
# 3 1
493 là chẵn và q, mod = divmod[10, 3]
print[q, mod]
# 3 1
489 nếu q, mod = divmod[10, 3]
print[q, mod]
# 3 1
493 là lẻ. Kiểm tra đối với q, mod = divmod[10, 3]
print[q, mod]
# 3 1
423 sẽ trả về Boolean của answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
700 hoặc answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
701 dựa trên việc q, mod = divmod[10, 3]
print[q, mod]
# 3 1
493 có chẵn hay khôngKiểm tra số lẻ hoàn toàn tương tự. Để kiểm tra một số lẻ, bạn đảo ngược kiểm tra đẳng thức
answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
71Hàm này sẽ trả về
answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
700 nếu q, mod = divmod[10, 3]
print[q, mod]
# 3 1
494 không bằng q, mod = divmod[10, 3]
print[q, mod]
# 3 1
423, nghĩa là có số dư chứng tỏ q, mod = divmod[10, 3]
print[q, mod]
# 3 1
493 là số lẻ. Bây giờ, bạn có thể tự hỏi liệu bạn có thể sử dụng hàm sau để xác định xem q, mod = divmod[10, 3]
print[q, mod]
# 3 1
493 có phải là số lẻ khônganswer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
72Câu trả lời cho câu hỏi này là có và không. Về mặt kỹ thuật, hàm này sẽ hoạt động theo cách Python tính modulo với số nguyên. Điều đó nói rằng, bạn nên tránh so sánh kết quả của phép toán modulo với
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
489 vì không phải tất cả phép toán modulo trong Python sẽ trả về cùng một phần còn lạiBạn có thể thấy tại sao trong các ví dụ sau
>>>
answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
73Trong ví dụ thứ hai, phần còn lại lấy dấu của ước số âm và trả về
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
441. Trong trường hợp này, kiểm tra Boolean answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
710 sẽ trả về answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
701Tuy nhiên, nếu bạn so sánh phép toán modulo với
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
423, thì toán hạng nào âm không quan trọng. Kết quả sẽ luôn là answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
700 khi nó là một số chẵn>>>
answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
74Nếu bạn cố gắng so sánh một phép toán modulo Python với
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
423, thì bạn sẽ không gặp bất kỳ vấn đề nào khi kiểm tra số chẵn và số lẻ hoặc bất kỳ bội số nào khác của một số trong mã của mìnhTrong phần tiếp theo, bạn sẽ xem cách bạn có thể sử dụng toán tử modulo với các vòng lặp để kiểm soát luồng chương trình của mình
Loại bỏ các quảng cáoCách chạy mã ở các khoảng thời gian cụ thể trong một vòng lặp
Với toán tử modulo của Python, bạn có thể chạy mã theo các khoảng thời gian cụ thể bên trong một vòng lặp. Điều này được thực hiện bằng cách thực hiện thao tác modulo với chỉ số hiện tại của vòng lặp và modulo. Số mô-đun xác định tần suất mã cụ thể theo khoảng thời gian sẽ chạy trong vòng lặp
Đây là một ví dụ
answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
75Mã này định nghĩa
answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
715, có hai tham số. answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
716 là danh sách các tên nên được chia thành các hàng. answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
717 đặt mô-đun cho hoạt động, xác định hiệu quả có bao nhiêu tên trong mỗi hàng. answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
715 sẽ lặp qua answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
716 và bắt đầu một hàng mới sau khi nó đạt giá trị answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
717Trước khi chia nhỏ chức năng chi tiết hơn, hãy xem nó hoạt động
>>>
answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
76Như bạn có thể thấy, danh sách tên đã được chia thành ba hàng, với tối đa ba tên trong mỗi hàng.
answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
717 mặc định là answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
722, nhưng bạn có thể chỉ định bất kỳ số nào>>>
answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
77Bây giờ bạn đã thấy mã đang hoạt động, bạn có thể chia nhỏ những gì nó đang làm. Đầu tiên, nó sử dụng
answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
723 để lặp lại trên answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
716, gán mục hiện tại trong danh sách cho answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
725 và giá trị đếm cho answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
726. Bạn có thể thấy rằng đối số tùy chọn answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
727 cho answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
723 được đặt thành q, mod = divmod[10, 3]
print[q, mod]
# 3 1
489. Điều này có nghĩa là số lượng answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
726 sẽ bắt đầu từ q, mod = divmod[10, 3]
print[q, mod]
# 3 1
489 thay vì q, mod = divmod[10, 3]
print[q, mod]
# 3 1
423answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
78Tiếp theo, bên trong vòng lặp, hàm gọi
answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
733 để xuất answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
725 ra hàng hiện tại. Tham số answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
735 cho answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
733 là một chuỗi rỗng [answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
737] vì vậy nó sẽ không xuất một dòng mới ở cuối chuỗi. Chuỗi f được chuyển đến answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
733, sử dụng chuỗi mà Python cung cấpanswer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
79Không đi vào quá nhiều chi tiết, cú pháp
answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
739 yêu cầu answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
733 thực hiện các thao tác sau- Xuất ít nhất
741 ký tự, ngay cả khi chuỗi ngắn hơn 15 ký tựanswer = divmod[10, 3] print[answer] print[answer[0], answer[1]] # [3, 1] # 3 1
- Căn giữa chuỗi
- Điền vào bất kỳ khoảng trống nào ở bên phải hoặc bên trái của chuỗi bằng ký tự gạch nối [
742]answer = divmod[10, 3] print[answer] print[answer[0], answer[1]] # [3, 1] # 3 1
Bây giờ tên đã được in ra hàng, hãy xem phần chính của
answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
715>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
80Mã này thực hiện phép lặp hiện tại
answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
726 và sử dụng toán tử modulo, so sánh nó với answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
717. Nếu kết quả bằng q, mod = divmod[10, 3]
print[q, mod]
# 3 1
423, thì nó có thể chạy mã theo khoảng thời gian cụ thể. Trong trường hợp này, hàm gọi answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
733 để thêm một dòng mới, bắt đầu một hàng mớiĐoạn mã trên chỉ là một ví dụ. Sử dụng mẫu
answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
748 cho phép bạn chạy các mã khác nhau theo các khoảng thời gian cụ thể trong các vòng lặp của mình. Trong phần tiếp theo, bạn sẽ hiểu khái niệm này xa hơn một chút và xem xét phép lặp tuần hoànCách tạo vòng lặp tuần hoàn
Lặp lại theo chu kỳ mô tả một loại lặp lại sẽ đặt lại khi đến một điểm nhất định. Nói chung, kiểu lặp này được sử dụng để hạn chế chỉ mục của phép lặp trong một phạm vi nhất định
Bạn có thể sử dụng toán tử modulo để tạo phép lặp tuần hoàn. Hãy xem một ví dụ sử dụng thư viện
answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
749 để vẽ hình>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
81Đoạn mã trên sử dụng vòng lặp vô hạn để vẽ hình ngôi sao lặp lại. Sau mỗi sáu lần lặp, nó thay đổi màu bút. Kích thước bút tăng lên với mỗi lần lặp lại cho đến khi
answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
750 được đặt lại thành q, mod = divmod[10, 3]
print[q, mod]
# 3 1
423. Nếu bạn chạy mã, thì bạn sẽ nhận được một cái gì đó tương tự như thế nàyCác phần quan trọng của mã này được đánh dấu bên dưới
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
82Mỗi lần qua vòng lặp,
answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
750 được cập nhật dựa trên kết quả của answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
753. Giá trị answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
750 mới này được sử dụng để tăng answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
755 với mỗi lần lặp lại. Khi answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
750 đạt đến >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
4, answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
753 sẽ bằng với q, mod = divmod[10, 3]
print[q, mod]
# 3 1
423 và answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
750 sẽ đặt lại thành q, mod = divmod[10, 3]
print[q, mod]
# 3 1
423Bạn có thể xem các bước lặp bên dưới để rõ hơn
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
83Khi đặt lại
answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
750 về q, mod = divmod[10, 3]
print[q, mod]
# 3 1
423, answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
764 sẽ chuyển sang màu ngẫu nhiên mới như bên dưới>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
84Mã trong phần này sử dụng
answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
765 làm mô đun, nhưng bạn có thể đặt nó thành bất kỳ số nào để điều chỉnh số lần vòng lặp sẽ lặp lại trước khi đặt lại giá trị answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
750Loại bỏ các quảng cáoCách chuyển đổi đơn vị
Trong phần này, bạn sẽ xem cách bạn có thể sử dụng toán tử modulo để chuyển đổi đơn vị. Các ví dụ sau lấy các đơn vị nhỏ hơn và chuyển đổi chúng thành các đơn vị lớn hơn mà không sử dụng số thập phân. Toán tử modulo được sử dụng để xác định bất kỳ phần còn lại nào có thể tồn tại khi đơn vị nhỏ hơn không chia hết cho đơn vị lớn hơn
Trong ví dụ đầu tiên này, bạn sẽ chuyển đổi inch thành feet. Toán tử modulo được sử dụng để lấy các inch còn lại không chia đều thành các feet. Toán tử chia tầng [
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
479] được sử dụng để lấy tổng số feet làm tròn xuống>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
85Đây là một ví dụ về chức năng được sử dụng
>>>
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
86Như bạn có thể thấy từ kết quả,
answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
768 trả về answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
765, là số inch còn lại không được chia đều cho feet. Kết quả của answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
770 là q, mod = divmod[10, 3]
print[q, mod]
# 3 1
465, là tổng số feet mà các inch được chia đềuBạn có thể làm điều này xa hơn một chút trong ví dụ tiếp theo này.
answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
772 lấy một số nguyên, answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
773, đại diện cho một số phút và xuất ra khoảng thời gian tính bằng ngày, giờ và phút>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
87Phá vỡ điều này, bạn có thể thấy rằng chức năng thực hiện như sau
- Xác định tổng số ngày chia đều với
774, trong đóanswer = divmod[10, 3] print[answer] print[answer[0], answer[1]] # [3, 1] # 3 1
775 là số phút trong một ngàyanswer = divmod[10, 3] print[answer] print[answer[0], answer[1]] # [3, 1] # 3 1
- Tính toán bất kỳ
776 nào còn lại vớianswer = divmod[10, 3] print[answer] print[answer[0], answer[1]] # [3, 1] # 3 1
777answer = divmod[10, 3] print[answer] print[answer[0], answer[1]] # [3, 1] # 3 1
- Sử dụng _______ 2776 để chia hết _______ 2779 và _______2780 dư
Bạn có thể xem cách nó hoạt động dưới đây
>>>
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
88Mặc dù các ví dụ trên chỉ giải quyết việc chuyển đổi inch sang feet và phút sang ngày, nhưng bạn có thể sử dụng bất kỳ loại đơn vị nào với toán tử modulo để chuyển đổi một đơn vị nhỏ hơn thành đơn vị lớn hơn
Ghi chú. Cả hai ví dụ trên có thể được sửa đổi để sử dụng
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
461 để làm cho mã ngắn gọn hơn. Nếu bạn còn nhớ, q, mod = divmod[10, 3]
print[q, mod]
# 3 1
461 trả về một bộ dữ liệu chứa kết quả của phân chia sàn và modulo bằng cách sử dụng các tham số được cung cấpBên dưới, các toán tử chia tầng và modulo đã được thay thế bằng
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
461>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
89Như bạn có thể thấy,
answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
784 trả về một bộ, được giải nén thành answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
785 và answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
786Nếu bạn thử chức năng cập nhật này, thì bạn sẽ nhận được kết quả giống như trước đây
>>>
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
60Bạn nhận được kết quả tương tự, nhưng bây giờ mã ngắn gọn hơn. Bạn cũng có thể cập nhật
answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
772>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
61Sử dụng
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
461, chức năng dễ đọc hơn phiên bản trước và trả về kết quả tương tự>>>
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
62Việc sử dụng
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
461 không cần thiết cho mọi trường hợp, nhưng nó có ý nghĩa ở đây vì các tính toán chuyển đổi đơn vị sử dụng cả phân chia sàn và moduloBây giờ bạn đã biết cách sử dụng toán tử modulo để chuyển đổi đơn vị, trong phần tiếp theo, bạn sẽ xem cách bạn có thể sử dụng toán tử modulo để kiểm tra các số nguyên tố
Cách để Xác định xem một số có phải là số nguyên tố hay không
Trong ví dụ tiếp theo này, bạn sẽ xem cách bạn có thể sử dụng toán tử modulo Python để kiểm tra xem một số có phải là số nguyên tố hay không. Số nguyên tố là số chỉ chứa hai ước là
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
489 và chính nó. Một số ví dụ về số nguyên tố là q, mod = divmod[10, 3]
print[q, mod]
# 3 1
439, answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
722, >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
4, q, mod = divmod[10, 3]
print[q, mod]
# 3 1
469, answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
795, answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
796, answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
797, answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
798 và answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
799Đoạn mã dưới đây là một triển khai để xác định tính nguyên tố của một số bằng cách sử dụng toán tử modulo
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
63Mã này định nghĩa
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
800, lấy tham số q, mod = divmod[10, 3]
print[q, mod]
# 3 1
493 và kiểm tra xem đó có phải là số nguyên tố không. Nếu đúng như vậy, thì một thông báo sẽ hiển thị cho biết rằng q, mod = divmod[10, 3]
print[q, mod]
# 3 1
493 là một số nguyên tố. Nếu nó không phải là số nguyên tố, thì một thông báo sẽ được hiển thị với tất cả các thừa số của số đóGhi chú. Đoạn mã trên không phải là cách hiệu quả nhất để kiểm tra các số nguyên tố. Nếu bạn muốn tìm hiểu sâu hơn, hãy xem Sàng của Eratosthenes và Sàng của Atkin để biết ví dụ về các thuật toán hiệu quả hơn để tìm số nguyên tố
Trước khi bạn xem xét kỹ hơn về chức năng, đây là kết quả sử dụng một số số khác nhau
>>>
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
64Đi sâu vào mã, bạn có thể thấy nó bắt đầu bằng cách kiểm tra xem
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
493 có nhỏ hơn q, mod = divmod[10, 3]
print[q, mod]
# 3 1
439 không. Số nguyên tố chỉ có thể lớn hơn hoặc bằng q, mod = divmod[10, 3]
print[q, mod]
# 3 1
439. Nếu q, mod = divmod[10, 3]
print[q, mod]
# 3 1
493 nhỏ hơn q, mod = divmod[10, 3]
print[q, mod]
# 3 1
439 thì hàm không cần tiếp tục. Nó sẽ answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
733 một tin nhắn và >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
809>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
65Nếu
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
493 lớn hơn q, mod = divmod[10, 3]
print[q, mod]
# 3 1
439 thì hàm kiểm tra xem q, mod = divmod[10, 3]
print[q, mod]
# 3 1
493 có phải là số nguyên tố không. Để kiểm tra điều này, hàm lặp lại tất cả các số giữa q, mod = divmod[10, 3]
print[q, mod]
# 3 1
439 và căn bậc hai của q, mod = divmod[10, 3]
print[q, mod]
# 3 1
493 để xem có số nào chia đều cho q, mod = divmod[10, 3]
print[q, mod]
# 3 1
493 không. Nếu một trong các số chia hết thì đã tìm được thừa số và q, mod = divmod[10, 3]
print[q, mod]
# 3 1
493 không thể là số nguyên tốĐây là phần chính của chức năng
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
66Có rất nhiều thứ để giải nén ở đây, vì vậy hãy thực hiện từng bước một
Đầu tiên, danh sách
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
817 được tạo với các thừa số ban đầu, >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
818. Danh sách này sẽ được sử dụng để lưu trữ bất kỳ yếu tố nào khác được tìm thấy>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
67Tiếp theo, bắt đầu với
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
439, mã tăng dần answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
750 cho đến khi đạt đến căn bậc hai của q, mod = divmod[10, 3]
print[q, mod]
# 3 1
493. Ở mỗi lần lặp, nó so sánh q, mod = divmod[10, 3]
print[q, mod]
# 3 1
493 với answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
750 để xem nó có chia hết không. Mã này chỉ cần kiểm tra đến và bao gồm căn bậc hai của q, mod = divmod[10, 3]
print[q, mod]
# 3 1
493 vì nó sẽ không chứa bất kỳ thừa số nào ở trên này>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
68Thay vì cố gắng xác định căn bậc hai của
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
493, hàm sử dụng vòng lặp >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
826 để xem liệu >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
827. Miễn là >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
827, vòng lặp chưa đạt đến căn bậc hai của q, mod = divmod[10, 3]
print[q, mod]
# 3 1
493Bên trong vòng lặp
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
826, toán tử modulo kiểm tra xem q, mod = divmod[10, 3]
print[q, mod]
# 3 1
493 có chia hết cho answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
750 không>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
69Nếu
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
493 chia hết cho answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
750, thì answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
750 là thừa số của q, mod = divmod[10, 3]
print[q, mod]
# 3 1
493 và một bộ các thừa số được thêm vào danh sách >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
817Khi vòng lặp
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
826 hoàn tất, mã sẽ kiểm tra xem có tìm thấy yếu tố bổ sung nào không>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
00Nếu có nhiều hơn một bộ trong danh sách
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
817, thì q, mod = divmod[10, 3]
print[q, mod]
# 3 1
493 không thể là số nguyên tố. Đối với các số không nguyên tố, các thừa số được in ra. Đối với số nguyên tố, hàm in ra thông báo cho biết rằng q, mod = divmod[10, 3]
print[q, mod]
# 3 1
493 là số nguyên tốLoại bỏ các quảng cáoCách triển khai mật mã
Toán tử modulo Python có thể được sử dụng để tạo mật mã. Mật mã là một loại thuật toán để thực hiện mã hóa và giải mã trên đầu vào, thường là văn bản. Trong phần này, bạn sẽ xem xét hai loại mật mã, mật mã Caesar và mật mã Vigenère
Mật mã Caesar
Mật mã đầu tiên mà bạn sẽ xem xét là mật mã Caesar, được đặt theo tên của Julius Caesar, người đã sử dụng nó để bí mật liên lạc các thông điệp. Đó là một mật mã thay thế sử dụng thay thế chữ cái để mã hóa một chuỗi văn bản
Mật mã Caesar hoạt động bằng cách lấy một chữ cái cần mã hóa và dịch chuyển nó sang trái hoặc phải một số vị trí nhất định trong bảng chữ cái. Bất kỳ chữ cái nào ở vị trí đó được sử dụng làm ký tự được mã hóa. Giá trị thay đổi tương tự này được áp dụng cho tất cả các ký tự trong chuỗi
Ví dụ: nếu sự thay đổi là
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
4, thì >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
843 sẽ thay đổi năm chữ cái để trở thành >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
844, >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
845 sẽ trở thành >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
846, v.v. Dưới đây, bạn có thể thấy quy trình mã hóa cho văn bản >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
847 với độ dịch chuyển là >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
4Mật mã kết quả là
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
849Giải mã mật mã được thực hiện bằng cách đảo ngược sự thay đổi. Cả quá trình mã hóa và giải mã có thể được mô tả bằng các biểu thức sau, trong đó
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
850 là chỉ mục của ký tự trong bảng chữ cái>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
01Mật mã này sử dụng toán tử modulo để đảm bảo rằng, khi dịch chuyển một chữ cái, chỉ mục sẽ bao quanh nếu đến cuối bảng chữ cái. Bây giờ bạn đã biết cách thức hoạt động của mật mã này, hãy xem cách triển khai
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
02Mã này định nghĩa một hàm có tên là
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
851, có hai tham số bắt buộc và một tham số tùy chọn
852 là văn bản được mã hóa hoặc giải mã>>> 13.3 % 1.1 0.09999999999999964 >>> import math >>> math.fmod[13.3, 1.1] 0.09999999999999964
853 là số vị trí dịch chuyển từng chữ cái>>> 13.3 % 1.1 0.09999999999999964 >>> import math >>> math.fmod[13.3, 1.1] 0.09999999999999964
854 là Boolean để đặt nếu>>> 13.3 % 1.1 0.09999999999999964 >>> import math >>> math.fmod[13.3, 1.1] 0.09999999999999964
852 nên được giải mã>>> 13.3 % 1.1 0.09999999999999964 >>> import math >>> math.fmod[13.3, 1.1] 0.09999999999999964
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
854 được bao gồm để có thể sử dụng một chức năng duy nhất để xử lý cả mã hóa và giải mã. Việc triển khai này chỉ có thể xử lý các ký tự chữ cái, do đó, trước tiên, hàm sẽ kiểm tra xem >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
852 có phải là ký tự chữ cái trong bảng mã ASCII không>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
03Sau đó, hàm xác định ba biến để lưu trữ ________ 3858 ký tự ASCII, ________ 3859 ký tự ASCII và kết quả mã hóa hoặc giải mã
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
04Tiếp theo, nếu hàm đang được sử dụng để giải mã
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
852, thì hàm này sẽ nhân >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
853 với q, mod = divmod[10, 3]
print[q, mod]
# 3 1
441 để làm cho nó dịch chuyển ngược lại>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
05Cuối cùng,
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
851 lặp lại các ký tự riêng lẻ trong >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
852 và thực hiện các hành động sau cho mỗi >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
865- Kiểm tra xem
865 là chữ thường hay chữ hoa>>> 13.3 % 1.1 0.09999999999999964 >>> import math >>> math.fmod[13.3, 1.1] 0.09999999999999964
- Lấy
726 củaanswer = divmod[10, 3] print[answer] print[answer[0], answer[1]] # [3, 1] # 3 1
865 trong danh sách>>> 13.3 % 1.1 0.09999999999999964 >>> import math >>> math.fmod[13.3, 1.1] 0.09999999999999964
858 hoặc>>> 13.3 % 1.1 0.09999999999999964 >>> import math >>> math.fmod[13.3, 1.1] 0.09999999999999964
859 ASCII>>> 13.3 % 1.1 0.09999999999999964 >>> import math >>> math.fmod[13.3, 1.1] 0.09999999999999964
- Thêm một
853 vào>>> 13.3 % 1.1 0.09999999999999964 >>> import math >>> math.fmod[13.3, 1.1] 0.09999999999999964
726 này để xác định chỉ mục của ký tự mật mã sẽ sử dụnganswer = divmod[10, 3] print[answer] print[answer[0], answer[1]] # [3, 1] # 3 1
- Sử dụng ________ 3873 để đảm bảo ca làm việc sẽ quay trở lại đầu bảng chữ cái
- Nối ký tự mật mã vào chuỗi
874>>> 13.3 % 1.1 0.09999999999999964 >>> import math >>> math.fmod[13.3, 1.1] 0.09999999999999964
Sau khi vòng lặp hoàn thành việc lặp qua giá trị
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
852, giá trị >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
874 được trả về>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
06Đây là mã đầy đủ một lần nữa
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
02Bây giờ hãy chạy mã trong Python REPL bằng cách sử dụng văn bản
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
877 với độ dịch chuyển là >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
878>>>
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
08Kết quả được mã hóa là
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
879. Sử dụng văn bản được mã hóa này, bạn có thể chạy giải mã để lấy văn bản gốc>>>
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
09Mật mã Caesar rất thú vị để chơi xung quanh phần giới thiệu về mật mã. Mặc dù mật mã Caesar hiếm khi được sử dụng riêng, nhưng nó là cơ sở cho các mật mã thay thế phức tạp hơn. Trong phần tiếp theo, bạn sẽ xem xét một trong những hậu duệ của mật mã Caesar, mật mã Vigenère
Mật mã Vigenère
Mật mã Vigenère là một mật mã thay thế đa bảng chữ cái. Để thực hiện mã hóa, nó sử dụng một mật mã Caesar khác cho mỗi chữ cái của văn bản đầu vào. Mật mã Vigenère sử dụng một từ khóa để xác định nên sử dụng mật mã Caesar nào để tìm chữ cái mật mã
Bạn có thể xem một ví dụ về quá trình mã hóa trong hình ảnh sau. Trong ví dụ này, văn bản đầu vào
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
847 được mã hóa bằng từ khóa >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
881Đối với mỗi chữ cái của văn bản đầu vào,
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
847, một chữ cái từ từ khóa >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
881 được sử dụng để xác định cột mật mã Caesar nào sẽ được chọn. Nếu từ khóa ngắn hơn văn bản đầu vào, như trường hợp của >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
881, thì các chữ cái của từ khóa sẽ được lặp lại cho đến khi tất cả các chữ cái của văn bản đầu vào được mã hóaDưới đây là một triển khai của mật mã Vigenère. Như bạn sẽ thấy, toán tử modulo được sử dụng hai lần trong hàm
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
60Bạn có thể nhận thấy rằng chữ ký của
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
885 khá giống với >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
851 ở phần trước>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
61Sự khác biệt chính là, thay vì tham số
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
853, >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
885 lấy tham số >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
889, là từ khóa được sử dụng trong quá trình mã hóa và giải mã. Một điểm khác biệt nữa là việc bổ sung >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
890. Dựa trên triển khai này, >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
885 chỉ có thể chấp nhận văn bản đầu vào là chữ hoaGiống như
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
851, >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
885 lặp lại từng chữ cái của văn bản đầu vào để mã hóa hoặc giải mã nó>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
62Trong đoạn mã trên, bạn có thể thấy lần đầu tiên hàm sử dụng toán tử modulo
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
63Ở đây, giá trị
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
894 được xác định dựa trên chỉ mục được trả về từ >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
895. Chỉ mục này được sử dụng để chọn một chữ cái từ chuỗi >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
889, chẳng hạn như >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
897 từ >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
881Toán tử modulo cho phép bạn sử dụng bất kỳ từ khóa có độ dài nào bất kể độ dài của
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
852 được mã hóa. Khi chỉ số answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
750, chỉ số của ký tự hiện đang được mã hóa, bằng với độ dài của từ khóa, nó sẽ bắt đầu lại từ đầu của từ khóaĐối với mỗi chữ cái của văn bản đầu vào, một số bước xác định cách mã hóa hoặc giải mã nó
- Xác định
850 dựa trên chỉ số của>>> 13.3 % 1.1 0.09999999999999964 >>> import math >>> math.fmod[13.3, 1.1] 0.09999999999999964
865 bên trong>>> 13.3 % 1.1 0.09999999999999964 >>> import math >>> math.fmod[13.3, 1.1] 0.09999999999999964
859>>> 13.3 % 1.1 0.09999999999999964 >>> import math >>> math.fmod[13.3, 1.1] 0.09999999999999964
- Xác định
604 dựa trên chỉ số của>>> 13.3 % 1.1 0.09999999999999964 >>> import math >>> math.fmod[13.3, 1.1] 0.09999999999999964
894 bên trong>>> 13.3 % 1.1 0.09999999999999964 >>> import math >>> math.fmod[13.3, 1.1] 0.09999999999999964
859>>> 13.3 % 1.1 0.09999999999999964 >>> import math >>> math.fmod[13.3, 1.1] 0.09999999999999964
- Sử dụng
850 và>>> 13.3 % 1.1 0.09999999999999964 >>> import math >>> math.fmod[13.3, 1.1] 0.09999999999999964
604 để lấy chỉ mục cho ký tự được mã hóa hoặc giải mã>>> 13.3 % 1.1 0.09999999999999964 >>> import math >>> math.fmod[13.3, 1.1] 0.09999999999999964
Hãy xem các bước này trong đoạn mã dưới đây
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
64Bạn có thể thấy rằng các chỉ số để giải mã và mã hóa được tính khác nhau. Đó là lý do tại sao
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
854 được sử dụng trong chức năng này. Bằng cách này, bạn có thể sử dụng chức năng cho cả mã hóa và giải mãSau khi xác định được
answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
726, bạn thấy cách sử dụng toán tử modulo thứ hai của hàm>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
65>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
611 đảm bảo rằng answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
726 của ký tự không vượt quá >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
613, do đó đảm bảo rằng nó nằm trong bảng chữ cái. Với chỉ mục này, ký tự được mã hóa hoặc giải mã được chọn từ >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
859 và nối vào >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
615Đây là mã đầy đủ của mật mã Vigenère một lần nữa
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
60Bây giờ hãy tiếp tục và chạy nó trong Python REPL
>>>
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
67Tốt đẹp. Bây giờ bạn có một mật mã Vigenère đang hoạt động để mã hóa các chuỗi văn bản
Loại bỏ các quảng cáoSử dụng nâng cao Toán tử Modulo trong Python
Trong phần cuối cùng này, bạn sẽ nâng kiến thức về toán tử modulo của mình lên một tầm cao mới bằng cách sử dụng nó với
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
419. Bạn cũng sẽ xem cách bạn có thể thêm >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
1 vào các lớp tùy chỉnh của mình để chúng có thể được sử dụng với toán tử moduloSử dụng Toán tử Modulo của Python với q, mod = divmod[10, 3]
print[q, mod]
# 3 1
419
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
Trước đó trong hướng dẫn này, bạn đã thấy cách bạn có thể sử dụng toán tử modulo với các loại số như
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
414 và q, mod = divmod[10, 3]
print[q, mod]
# 3 1
415 cũng như với q, mod = divmod[10, 3]
print[q, mod]
# 3 1
418. Bạn cũng có thể sử dụng toán tử modulo từ mô-đun >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
623. Bạn sử dụng q, mod = divmod[10, 3]
print[q, mod]
# 3 1
419 khi bạn muốn kiểm soát rời rạc độ chính xác của các phép toán số học dấu phẩy độngDưới đây là một số ví dụ về việc sử dụng toàn bộ số nguyên với
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
419 và toán tử modulo>>>
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
68Dưới đây là một số số dấu phẩy động được sử dụng với
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
419 và toán tử modulo>>>
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
69Tất cả các hoạt động modulo với
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
419 đều trả về kết quả giống như các loại số khác, ngoại trừ khi một trong các toán hạng là số âm. Không giống như q, mod = divmod[10, 3]
print[q, mod]
# 3 1
414 và q, mod = divmod[10, 3]
print[q, mod]
# 3 1
415, nhưng giống như q, mod = divmod[10, 3]
print[q, mod]
# 3 1
418, q, mod = divmod[10, 3]
print[q, mod]
# 3 1
419 sử dụng dấu hiệu của số bị chia cho kết quảHãy xem các ví dụ bên dưới để so sánh kết quả của việc sử dụng toán tử modulo với các giá trị tiêu chuẩn
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
414 và q, mod = divmod[10, 3]
print[q, mod]
# 3 1
415 và với q, mod = divmod[10, 3]
print[q, mod]
# 3 1
419>>>
8 o'clock + 9 = 17 o'clock
17 mod 12 = 5
00So với
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
418 thì q, mod = divmod[10, 3]
print[q, mod]
# 3 1
419 sẽ có cùng dấu nhưng độ chính xác sẽ khác>>>
8 o'clock + 9 = 17 o'clock
17 mod 12 = 5
01Như bạn có thể thấy từ các ví dụ trên, làm việc với
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
419 và toán tử modulo cũng tương tự như làm việc với các kiểu số khác. Bạn chỉ cần lưu ý cách xác định dấu của kết quả khi làm việc với toán hạng âmTrong phần tiếp theo, bạn sẽ xem cách bạn có thể ghi đè toán tử modulo trong các lớp của mình để tùy chỉnh hành vi của nó
Sử dụng toán tử Modulo Python với các lớp tùy chỉnh
Mô hình dữ liệu Python cho phép bạn ghi đè các phương thức tích hợp sẵn trong đối tượng Python để tùy chỉnh hành vi của nó. Trong phần này, bạn sẽ xem cách ghi đè
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
1 để bạn có thể sử dụng toán tử modulo với các lớp của riêng mìnhTrong ví dụ này, bạn sẽ làm việc với lớp
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
639. Lớp này sẽ theo dõi lượng thời gian học sinh đã học. Đây là lớp >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
639 ban đầu8 o'clock + 9 = 17 o'clock
17 mod 12 = 5
02Lớp
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
639 được khởi tạo với tham số answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
725 và bắt đầu bằng một danh sách trống, >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
643, danh sách này sẽ chứa danh sách các số nguyên biểu thị số phút học mỗi phiên. Ngoài ra còn có >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
644, tham số >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
645 sẽ là danh sách các buổi học để thêm vào >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
643Bây giờ, nếu bạn còn nhớ từ phần trên,
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
647 đã sử dụng toán tử modulo của Python để chuyển đổi answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
773 thành ngày, giờ và phút. Bây giờ, bạn sẽ triển khai một phiên bản sửa đổi của phương thức đó để xem cách bạn có thể sử dụng lớp tùy chỉnh của mình với toán tử modulo8 o'clock + 9 = 17 o'clock
17 mod 12 = 5
03Bạn có thể sử dụng hàm này với lớp ________ 4639 để hiển thị tổng số giờ mà lớp ________ 4639 đã học. Kết hợp với lớp
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
639 ở trên, mã sẽ như thế này8 o'clock + 9 = 17 o'clock
17 mod 12 = 5
04Nếu bạn tải mô-đun này trong Python REPL, thì bạn có thể sử dụng nó như thế này
>>>
8 o'clock + 9 = 17 o'clock
17 mod 12 = 5
05Đoạn mã trên in ra tổng số giờ
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
652 đã học. Phiên bản mã này hoạt động, nhưng nó yêu cầu thêm bước tính tổng >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
643 để có được answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
773 trước khi gọi >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
655Đây là cách bạn có thể sửa đổi lớp
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
639 để đơn giản hóa mã8 o'clock + 9 = 17 o'clock
17 mod 12 = 5
06Bằng cách ghi đè
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
1 và >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
658, bạn có thể sử dụng phiên bản >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
639 với toán tử modulo. Tính toán >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
660 của >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
643 cũng được bao gồm trong lớp >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
639Với những sửa đổi này, bạn có thể sử dụng phiên bản
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
639 trực tiếp trong >>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
655. Vì answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
773 không còn cần thiết, bạn có thể xóa nó8 o'clock + 9 = 17 o'clock
17 mod 12 = 5
07Đây là mã đầy đủ sau khi sửa đổi
8 o'clock + 9 = 17 o'clock
17 mod 12 = 5
08Bây giờ, gọi mã trong Python REPL, bạn có thể thấy nó ngắn gọn hơn nhiều
>>>
8 o'clock + 9 = 17 o'clock
17 mod 12 = 5
09Bằng cách ghi đè
>>> 13.3 % 1.1
0.09999999999999964
>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
1, bạn cho phép các lớp tùy chỉnh của mình hoạt động giống các kiểu số tích hợp sẵn của Python hơnLoại bỏ các quảng cáoSự kết luận
Thoạt nhìn, toán tử modulo Python có thể không thu hút sự chú ý của bạn. Tuy nhiên, như bạn đã thấy, có rất nhiều điều đối với nhà điều hành khiêm tốn này. Từ việc kiểm tra các số chẵn đến mã hóa văn bản bằng mật mã, bạn đã thấy nhiều cách sử dụng khác nhau cho toán tử modulo
Trong hướng dẫn này, bạn đã học cách
- Sử dụng toán tử modulo với
414,q, mod = divmod[10, 3] print[q, mod] # 3 1
415,q, mod = divmod[10, 3] print[q, mod] # 3 1
418,q, mod = divmod[10, 3] print[q, mod] # 3 1
461 vàq, mod = divmod[10, 3] print[q, mod] # 3 1
419q, mod = divmod[10, 3] print[q, mod] # 3 1
- Tính toán kết quả của một hoạt động modulo
- Giải quyết các vấn đề trong thế giới thực bằng cách sử dụng toán tử modulo
- Ghi đè
1 trong các lớp của riêng bạn để sử dụng chúng với toán tử modulo>>> 13.3 % 1.1 0.09999999999999964 >>> import math >>> math.fmod[13.3, 1.1] 0.09999999999999964
Với kiến thức bạn đã thu được trong hướng dẫn này, giờ đây bạn có thể bắt đầu sử dụng toán tử modulo trong mã của riêng mình một cách thành công. Python hạnh phúc
Đánh dấu là đã hoàn thành
Xem ngay Hướng dẫn này có một khóa học video liên quan do nhóm Real Python tạo. Xem nó cùng với hướng dẫn bằng văn bản để hiểu sâu hơn. Mô-đun Python. Sử dụng Toán tử %
🐍 Thủ thuật Python 💌
Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python
Gửi cho tôi thủ thuật Python »
Giới thiệu về Jason Van Schooneveld
Jason là một nhà phát triển phần mềm có trụ sở tại Đài Bắc. Khi anh ấy không mày mò thiết bị điện tử hoặc xây dựng ứng dụng web Django, bạn có thể thấy anh ấy đi bộ đường dài trên những ngọn núi ở Đài Loan hoặc học tiếng Trung.
» Thông tin thêm về JasonMỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là
Aldren
Geir Arne
Jim
Joanna
Gia-cốp
Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực
Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia
Nâng cao kỹ năng Python của bạn »
Bậc thầy Kỹ năng Python trong thế giới thực
Với quyền truy cập không giới hạn vào Python thực
Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia
Nâng cao kỹ năng Python của bạn »
Bạn nghĩ sao?
Đánh giá bài viết này
Tweet Chia sẻ Chia sẻ EmailBài học số 1 hoặc điều yêu thích mà bạn đã học được là gì?
Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi