Mã để tìm phần còn lại trong python là gì?

Nhận thương và số dư với divmod[] trong Python

đã đă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
72

q = 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
75

Bạ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íu

thể 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 đè
    >>> 13.3 % 1.1
    0.09999999999999964
    
    >>> import math
    >>> math.fmod[13.3, 1.1]
    0.09999999999999964
    
    1 trong các lớp của bạn để sử dụng chúng với toán tử modulo
  • 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
6

Bâ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ày

q, mod = divmod[10, 3]
print[q, mod]
# 3 1
4

Phươ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ày

answer = 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 đương

Bạ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
8

Cả 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
404

Bâ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
415

Loại bỏ các quảng cáo

Khá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ạn

Toán Tử Modulo Với
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
414

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
6

Hã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
0

Tiế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
415

Toán Tử Modulo Với
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
415

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
6

Mộ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
0

Cá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 theo

Cũ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ày

Toá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
5

Phầ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ố chia

q, 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ại

q, mod = divmod[10, 3]
print[q, mod]
# 3 1
41

Có ba biến phương trình này

  1. q, mod = divmod[10, 3]
    print[q, mod]
    # 3 1
    
    445 là phần còn lại
  2. q, mod = divmod[10, 3]
    print[q, mod]
    # 3 1
    
    50 là cổ tức
  3. q, mod = divmod[10, 3]
    print[q, mod]
    # 3 1
    
    52 là số chia

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
42

Tạ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 sau

q, mod = divmod[10, 3]
print[q, mod]
# 3 1
43

q, 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ố 0

q, 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
441

Bâ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ông

Bạ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
45

q, 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
419

Loại bỏ các quảng cáo

Toán tử Modulo và
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
461

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ấp

Dướ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
46

Bạ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
4

Dướ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
47

Bâ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
48

Cả 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

  1. q, mod = divmod[10, 3]
    print[q, mod]
    # 3 1
    
    480 được đánh giá, dẫn đến
    q, mod = divmod[10, 3]
    print[q, mod]
    # 3 1
    
    481
  2. q, mod = divmod[10, 3]
    print[q, mod]
    # 3 1
    
    482 được đánh giá, dẫn đến
    q, mod = divmod[10, 3]
    print[q, mod]
    # 3 1
    
    483
  3. q, mod = divmod[10, 3]
    print[q, mod]
    # 3 1
    
    483 được đánh giá, dẫn đến
    q, mod = divmod[10, 3]
    print[q, mod]
    # 3 1
    
    485

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
49

Trong 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
489

Toá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ông

answer = 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ông

Kiể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
71

Hà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ông

answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
72

Câ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ại

Bạ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
73

Trong 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
701

Tuy 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
74

Nế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ình

Trong 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áo

Cá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
75

Mã 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
717

Trướ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
76

Như 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
77

Bâ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
423

answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
78

Tiế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ấp

answer = divmod[10, 3]
print[answer]
print[answer[0], answer[1]]
# [3, 1]
# 3 1
79

Khô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
    answer = divmod[10, 3]
    print[answer]
    print[answer[0], answer[1]]
    # [3, 1]
    # 3 1
    
    741 ký tự, ngay cả khi chuỗi ngắn hơn 15 ký tự
  • 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 [
    answer = divmod[10, 3]
    print[answer]
    print[answer[0], answer[1]]
    # [3, 1]
    # 3 1
    
    742]

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
80

Mã 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àn

Cá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ày

Cá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
82

Mỗ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
423

Bạ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
83

Khi đặ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
84

Mã 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
750

Loại bỏ các quảng cáo

Cá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
86

Như 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 đều

Bạ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
87

Phá vỡ điều này, bạn có thể thấy rằng chức năng thực hiện như sau

  1. Xác định tổng số ngày chia đều với
    answer = divmod[10, 3]
    print[answer]
    print[answer[0], answer[1]]
    # [3, 1]
    # 3 1
    
    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ày
  2. Tính toán bất kỳ
    answer = divmod[10, 3]
    print[answer]
    print[answer[0], answer[1]]
    # [3, 1]
    # 3 1
    
    776 nào còn lại với
    answer = divmod[10, 3]
    print[answer]
    print[answer[0], answer[1]]
    # [3, 1]
    # 3 1
    
    777
  3. 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
88

Mặ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ấp

Bê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
89

Như 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
786

Nế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
60

Bạ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
61

Sử 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
62

Việ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à modulo

Bâ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
63

Mã 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
65

Nế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
66

Có 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
67

Tiế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
68

Thay 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
493

Bê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
69

Nế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
817

Khi 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
00

Nế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áo

Cá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
4

Mật mã kết quả là

>>> 13.3 % 1.1
0.09999999999999964

>>> import math
>>> math.fmod[13.3, 1.1]
0.09999999999999964
849

Giả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
01

Mậ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
02

Mã 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

  • >>> 13.3 % 1.1
    0.09999999999999964
    
    >>> import math
    >>> math.fmod[13.3, 1.1]
    0.09999999999999964
    
    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
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
03

Sau đó, 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
04

Tiế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
05

Cuố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

  1. Kiểm tra xem
    >>> 13.3 % 1.1
    0.09999999999999964
    
    >>> import math
    >>> math.fmod[13.3, 1.1]
    0.09999999999999964
    
    865 là chữ thường hay chữ hoa
  2. Lấy
    answer = divmod[10, 3]
    print[answer]
    print[answer[0], answer[1]]
    # [3, 1]
    # 3 1
    
    726 của
    >>> 13.3 % 1.1
    0.09999999999999964
    
    >>> import math
    >>> math.fmod[13.3, 1.1]
    0.09999999999999964
    
    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
  3. Thêm một
    >>> 13.3 % 1.1
    0.09999999999999964
    
    >>> import math
    >>> math.fmod[13.3, 1.1]
    0.09999999999999964
    
    853 vào
    answer = divmod[10, 3]
    print[answer]
    print[answer[0], answer[1]]
    # [3, 1]
    # 3 1
    
    726 này để xác định chỉ mục của ký tự mật mã sẽ sử dụng
  4. Sử dụng ________ 3873 để đảm bảo ca làm việc sẽ quay trở lại đầu bảng chữ cái
  5. Nối ký tự mật mã vào chuỗi
    >>> 13.3 % 1.1
    0.09999999999999964
    
    >>> import math
    >>> math.fmod[13.3, 1.1]
    0.09999999999999964
    
    874

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
02

Bâ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
08

Kế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
09

Mậ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óa

Dướ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
60

Bạ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
61

Sự 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ữ hoa

Giố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
62

Trong đ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
881

Toá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ó

  1. Xác định
    >>> 13.3 % 1.1
    0.09999999999999964
    
    >>> import math
    >>> math.fmod[13.3, 1.1]
    0.09999999999999964
    
    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
  2. Xác định
    >>> 13.3 % 1.1
    0.09999999999999964
    
    >>> import math
    >>> math.fmod[13.3, 1.1]
    0.09999999999999964
    
    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
  3. Sử dụng
    >>> 13.3 % 1.1
    0.09999999999999964
    
    >>> import math
    >>> math.fmod[13.3, 1.1]
    0.09999999999999964
    
    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ã

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
64

Bạ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
60

Bâ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
67

Tố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áo

Sử 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ử modulo

Sử dụng Toán tử Modulo của Python với
q, mod = divmod[10, 3]
print[q, mod]
# 3 1
419

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 động

Dướ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
68

Dướ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
69

Tấ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
00

So 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
01

Như 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 âm

Trong 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ình

Trong 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 đầu

8 o'clock + 9 = 17 o'clock
17 mod 12 = 5
02

Lớ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
643

Bâ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ử modulo

8 o'clock + 9 = 17 o'clock
17 mod 12 = 5
03

Bạ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ày

8 o'clock + 9 = 17 o'clock
17 mod 12 = 5
04

Nế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
06

Bằ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
639

Vớ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
08

Bâ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
09

Bằ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ơn

Loại bỏ các quảng cáo

Sự 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
    q, mod = divmod[10, 3]
    print[q, mod]
    # 3 1
    
    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
    
    419
  • 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 đè
    >>> 13.3 % 1.1
    0.09999999999999964
    
    >>> import math
    >>> math.fmod[13.3, 1.1]
    0.09999999999999964
    
    1 trong các lớp của riêng bạn để sử dụng chúng với toán tử modulo

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ề Jason

Mỗ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ẻ Email

Bà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

Mã cho phần còn lại là gì?

Số dư [%] . Nó luôn lấy dấu của số bị chia. remainder [ % ] operator returns the remainder left over when one operand is divided by a second operand. It always takes the sign of the dividend.

Hàm còn lại trong Python là gì?

Toán tử mô đun, đôi khi còn được gọi là toán tử số dư hoặc toán tử số dư số nguyên hoạt động trên số nguyên [và biểu thức số nguyên] và mang lại phần dư khi toán hạng thứ nhất được chia cho toán hạng thứ hai< . Trong Python, toán tử mô đun là dấu phần trăm [ % ]. Cú pháp giống như đối với các toán tử khác. . In Python, the modulus operator is a percent sign [ % ]. The syntax is the same as for other operators.

Chủ Đề