Hướng dẫn modulo in python example - mô-đun trong ví dụ python

Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem nó cùng với hướng dẫn bằng văn bản để làm sâu sắc thêm sự hiểu biết của bạn: Python Modulo: Sử dụng toán tử % This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Python Modulo: Using the % Operator

Show

Python hỗ trợ một loạt các toán tử số học 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
9), trả về phần còn lại của việc chia hai số.modulo operator (
>>> 13.3 % 1.1
0.09999999999999964

>>> import math
>>> math.fmod(13.3, 1.1)
0.09999999999999964
9), which returns the remainder of dividing two numbers.

Trong hướng dẫn này, bạn sẽ học:

  • Cách thức hoạt động của Modulo trong toán họcmodulo works in mathematics
  • Cách sử dụng toán tử modulo Python với các loại số khác nhaunumeric types
  • Cách Python tính toán kết quả của hoạt động modulomodulo operation
  • Cách ghi đè
    r = 8 - (-3 * trunc(8/-3))
    r = 8 - (-3 * trunc(-2.666666666667))
    r = 8 - (-3 * -2) # Rounded toward 0
    r = 8 - 6
    r = 2
    
    
    0 trong các lớp của bạn để sử dụng chúng với toán tử modulo
    r = 8 - (-3 * trunc(8/-3))
    r = 8 - (-3 * trunc(-2.666666666667))
    r = 8 - (-3 * -2) # Rounded toward 0
    r = 8 - 6
    r = 2
    
    
    0
    in your classes to use them with the modulo operator
  • Cách sử dụng toán tử modulo Python để giải quyết các vấn đề trong thế giới thựcreal-world problems

Toán tử modulo Python đôi khi có thể bị bỏ qua. Nhưng có một sự hiểu biết tốt về nhà điều hành 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.

Modulo trong toán học

Thuật ngữ modulo xuất phát từ một nhánh của toán học gọi là số học mô -đun. Số học mô -đun xử lý số học số nguyên trên một dòng số tròn có một tập hợp số cố định. Tất cả các hoạt động 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 gọi là mô đun.modulo comes from a branch of mathematics called modular arithmetic. Modular arithmetic deals with integer arithmetic on a circular number line that has a fixed set of numbers. All arithmetic operations performed on this number line will wrap around when they reach a certain number called the modulus.

Một ví dụ kinh điển về mô-đun trong số học mô-đun là đồng hồ mười hai giờ. Đồng hồ mười hai giờ có một tập hợp các giá trị cố định, từ 1 đến 12. Khi đếm trên đồng hồ mười hai giờ Modulo 12, đôi khi rút ngắn thành Mod 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à nhận số tương đương bị ràng buộc với phạm vi của mô đun.

Ví dụ: giả sử bạn muốn xác định thời gian là chín giờ sau 8:00 sáng trên đồng hồ mười hai giờ, bạn không thể thêm 9 đến 8 vì bạn sẽ nhận được 17. Bạn cần lấy kết quả, 17 và sử dụng

r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

1 để có được giá trị tương đương của nó trong bối cảnh mười hai giờ:

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

r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

2 Trả về
r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

3. Điều này có nghĩa là chín giờ trước 8:00 sáng là 5:00 chiều. Bạn đã xác định điều này bằng cách lấy số
r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

4 và áp dụng nó vào bối cảnh
r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

5.

Bây giờ, nếu bạn nghĩ về nó,

r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

4 và
r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

3 tương đương trong bối cảnh
r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

5. Nếu bạn nhìn vào bàn tay giờ lúc 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:

Phương trình này đọc được

r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

9 và
r = 8 - (-3 * floor(8/-3))
r = 8 - (-3 * floor(-2.666666666667))
r = 8 - (-3 * -3) # Rounded away from 0
r = 8 - 9
r = -1
0 là modulo đồng dạng
r = 8 - (-3 * floor(8/-3))
r = 8 - (-3 * floor(-2.666666666667))
r = 8 - (-3 * -3) # Rounded away from 0
r = 8 - 9
r = -1
1. Điều này có nghĩa là
r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

9 và
r = 8 - (-3 * floor(8/-3))
r = 8 - (-3 * floor(-2.666666666667))
r = 8 - (-3 * -3) # Rounded away from 0
r = 8 - 9
r = -1
0 tương đương trong
r = 8 - (-3 * floor(8/-3))
r = 8 - (-3 * floor(-2.666666666667))
r = 8 - (-3 * -3) # Rounded away from 0
r = 8 - 9
r = -1
4 vì chúng có cùng phần còn lại khi chia cho
r = 8 - (-3 * floor(8/-3))
r = 8 - (-3 * floor(-2.666666666667))
r = 8 - (-3 * -3) # Rounded away from 0
r = 8 - 9
r = -1
1. Trong phương trình trên,
r = 8 - (-3 * floor(8/-3))
r = 8 - (-3 * floor(-2.666666666667))
r = 8 - (-3 * -3) # Rounded away from 0
r = 8 - 9
r = -1
1 là mô đun cho cả
r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

9 và
r = 8 - (-3 * floor(8/-3))
r = 8 - (-3 * floor(-2.666666666667))
r = 8 - (-3 * -3) # Rounded away from 0
r = 8 - 9
r = -1
0. Sử dụng các giá trị
r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

4 và
r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

3 từ trước, phương trình sẽ trông như thế này:modulus for both
r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

9 and
r = 8 - (-3 * floor(8/-3))
r = 8 - (-3 * floor(-2.666666666667))
r = 8 - (-3 * -3) # Rounded away from 0
r = 8 - 9
r = -1
0. Using the values
r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

4 and
r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

3 from before, the equation would look like this:

Điều này đọc được ____ ____74 và

r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

3 là modulo đồng dạng
>>> 8.0 % -3
-1.0

>>> import math
>>> math.fmod(8.0, -3.0)
2.0
3.
r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

4 và
r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

3 có cùng phần còn lại,
r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

3, khi chia cho
>>> 8.0 % -3
-1.0

>>> import math
>>> math.fmod(8.0, -3.0)
2.0
3. Vì vậy, trong
r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

5, các số
r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

4 và
r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

3 là tương đương.

Bạn có thể xác nhận điều này bằng cách sử dụng bộ phận:

17 / 12 = 1 R 5
5 / 12 = 0 R 5

Cả hai hoạt động đều có cùng phần còn lại,

r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

3, vì vậy chúng có thể tương đương với modulo
>>> 8.0 % -3
-1.0

>>> import math
>>> math.fmod(8.0, -3.0)
2.0
3.

Bây giờ, điều này có vẻ như rất nhiều toán học cho một toán tử Python, nhưng việc có kiến ​​thức này sẽ chuẩn bị cho bạn 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 những điều cơ bản của việc sử dụng toán tử modulo Python với các loại số

17 / 12 = 1 R 5
5 / 12 = 0 R 5
03 và
17 / 12 = 1 R 5
5 / 12 = 0 R 5
04.

Nhà điều hành Modulo 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 loại số

17 / 12 = 1 R 5
5 / 12 = 0 R 5
03 và
17 / 12 = 1 R 5
5 / 12 = 0 R 5
04. 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ư
17 / 12 = 1 R 5
5 / 12 = 0 R 5
07,
17 / 12 = 1 R 5
5 / 12 = 0 R 5
08 và các lớp học của riêng bạn.

Toán tử modulo với 17 / 12 = 1 R 5 5 / 12 = 0 R 5 03

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 bộ phận Euclide tiêu chuẩn:

>>>

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10

Hãy cẩn thận! Giống như với toán tử phân chia (

17 / 12 = 1 R 5
5 / 12 = 0 R 5
10), Python sẽ trả lại
17 / 12 = 1 R 5
5 / 12 = 0 R 5
11 nếu bạn cố gắng sử dụng toán tử modulo với ước số
17 / 12 = 1 R 5
5 / 12 = 0 R 5
12:

>>>

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero

Hãy cẩn thận! Giống như với toán tử phân chia (

17 / 12 = 1 R 5
5 / 12 = 0 R 5
10), Python sẽ trả lại
17 / 12 = 1 R 5
5 / 12 = 0 R 5
11 nếu bạn cố gắng sử dụng toán tử modulo với ước số
17 / 12 = 1 R 5
5 / 12 = 0 R 5
12:

Tiếp theo, bạn sẽ xem xét sử dụng toán tử modulo với 17 / 12 = 1 R 5 5 / 12 = 0 R 5 04.

Toán tử modulo với

17 / 12 = 1 R 5
5 / 12 = 0 R 5
04

>>>

>>> 12.5 % 5.5
1.5

>>> 17.0 % 12.0
5.0

Hãy cẩn thận! Giống như với toán tử phân chia (

17 / 12 = 1 R 5
5 / 12 = 0 R 5
10), Python sẽ trả lại
17 / 12 = 1 R 5
5 / 12 = 0 R 5
11 nếu bạn cố gắng sử dụng toán tử modulo với ước số
17 / 12 = 1 R 5
5 / 12 = 0 R 5
12:

>>>

>>> import math
>>> math.fmod(12.5, 5.5)
1.5

>>> math.fmod(8.5, 2.5)
1.0

Các tài liệu Python chính thức đề xuất sử dụng

17 / 12 = 1 R 5
5 / 12 = 0 R 5
07 trên toán tử modulo Python khi làm việc với các giá trị
17 / 12 = 1 R 5
5 / 12 = 0 R 5
04 vì cách
17 / 12 = 1 R 5
5 / 12 = 0 R 5
07 tính toán kết quả của hoạt động modulo. Nếu bạn sử dụng một toán hạng âm, thì bạn có thể thấy các kết quả khác nhau giữa
17 / 12 = 1 R 5
5 / 12 = 0 R 5
24 và
17 / 12 = 1 R 5
5 / 12 = 0 R 5
25. Bạn có thể khám phá bằng cách sử dụng toán tử modulo với các toán hạng tiêu cực 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à

17 / 12 = 1 R 5
5 / 12 = 0 R 5
07 có thể gặp phải các vấn đề 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 duy trì độ chính xác 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

17 / 12 = 1 R 5
5 / 12 = 0 R 5
08. Bạn sẽ nhìn vào điều này sau trong hướng dẫn này.

Toán tử modulo có 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 tích cực và trả về kết quả dự đoán. Khi một toán hạng tiêu cực đượ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 hoạt động modulo với toán hạng âm để lại sự mơ hồ về việc liệu phần còn lại có nên lấy dấu cổ tức (số được chia) hoặc dấu hiệu của ước số (số mà cổ tức được chia). Các ngôn ngữ lập trình khác nhau xử lý điều này khác nhau.dividend (the number being divided) or the sign of the divisor (the number by which the dividend is divided). Different programming languages handle this differently.

Ví dụ, trong JavaScript, phần còn lại sẽ lấy dấu của cổ tức:

Phần còn lại trong ví dụ này,

17 / 12 = 1 R 5
5 / 12 = 0 R 5
28, là tích cực vì nó có dấu hiệu của cổ tức,
17 / 12 = 1 R 5
5 / 12 = 0 R 5
29. Trong Python và các ngôn ngữ khác, phần còn lại sẽ lấy dấu hiệu của ước số:

Ở đây bạn có thể thấy rằng phần còn lại,

17 / 12 = 1 R 5
5 / 12 = 0 R 5
30, có dấu hiệu của ước số,
17 / 12 = 1 R 5
5 / 12 = 0 R 5
31.

Bạn có thể tự hỏi tại sao phần còn lại trong JavaScript là

17 / 12 = 1 R 5
5 / 12 = 0 R 5
28 và phần còn lại trong Python là
17 / 12 = 1 R 5
5 / 12 = 0 R 5
30. Điều này có liên quan đến cách các ngôn ngữ khác nhau xác định kết quả của hoạt động modulo. Các ngôn ngữ trong đó phần còn lại lấy dấu của cổ tức Sử dụng phương trình sau để xác định phần còn lại:

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

  1. 17 / 12 = 1 R 5
    5 / 12 = 0 R 5
    
    34 là phần còn lại.
    is the remainder.
  2. r = 8 - (-3 * trunc(8/-3))
    r = 8 - (-3 * trunc(-2.666666666667))
    r = 8 - (-3 * -2) # Rounded toward 0
    r = 8 - 6
    r = 2
    
    
    9 là cổ tức.
    is the dividend.
  3. r = 8 - (-3 * floor(8/-3))
    r = 8 - (-3 * floor(-2.666666666667))
    r = 8 - (-3 * -3) # Rounded away from 0
    r = 8 - 9
    r = -1
    
    1 là ước số.
    is the divisor.

17 / 12 = 1 R 5
5 / 12 = 0 R 5
37 Trong phương trình này có nghĩa là nó sử dụng phân chia bị cắt ngắn, sẽ luôn làm tròn một số âm về 0. Để làm rõ hơn, hãy xem các bước của hoạt động modulo bên dưới sử dụng
17 / 12 = 1 R 5
5 / 12 = 0 R 5
29 làm cổ tức và
17 / 12 = 1 R 5
5 / 12 = 0 R 5
31 làm ước số:truncated division, which will always round a negative number toward zero. For more clarification, see the steps of the modulo operation below using
17 / 12 = 1 R 5
5 / 12 = 0 R 5
29 as the dividend and
17 / 12 = 1 R 5
5 / 12 = 0 R 5
31 as the divisor:

r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

Ở đây bạn có thể thấy làm thế nào một ngôn ngữ như JavaScript có được phần còn lại

17 / 12 = 1 R 5
5 / 12 = 0 R 5
28. Python và các ngôn ngữ khác trong đó phần còn lại lấy dấu hiệu của ước số sử dụng phương trình sau:

17 / 12 = 1 R 5
5 / 12 = 0 R 5
41 Trong phương trình này có nghĩa là nó sử dụng phân chia sàn. Với số lượng tích cực, phân chia sàn sẽ trả về kết quả tương tự như bộ phận bị cắt ngắn. Nhưng với số âm, phân chia sàn sẽ làm tròn kết quả, cách xa số không:floor division. With positive numbers, floor division will return the same result as truncated division. But with a negative number, floor division will round the result down, away from zero:

r = 8 - (-3 * floor(8/-3))
r = 8 - (-3 * floor(-2.666666666667))
r = 8 - (-3 * -3) # Rounded away from 0
r = 8 - 9
r = -1

Ở đây bạn có thể thấy rằng kết quả là

17 / 12 = 1 R 5
5 / 12 = 0 R 5
30.

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 quan trọng nếu bạn chỉ sử dụng Python. Vâng, hóa ra, không phải tất cả các hoạt động modulo trong Python đều giống nhau. Mặc dù modulo được sử dụng với các loại

17 / 12 = 1 R 5
5 / 12 = 0 R 5
03 và
17 / 12 = 1 R 5
5 / 12 = 0 R 5
04 sẽ lấy dấu hiệu của ước số, các loại khác sẽ không.

Bạn có thể thấy một ví dụ về điều này khi bạn so sánh kết quả của

17 / 12 = 1 R 5
5 / 12 = 0 R 5
45 và
17 / 12 = 1 R 5
5 / 12 = 0 R 5
46:

>>>

>>> 8.0 % -3
-1.0

>>> import math
>>> math.fmod(8.0, -3.0)
2.0

17 / 12 = 1 R 5
5 / 12 = 0 R 5
07 có dấu hiệu của cổ tức bằng cách sử dụng bộ phận bị cắt cụt, trong khi
17 / 12 = 1 R 5
5 / 12 = 0 R 5
04 sử dụng dấu hiệu của ước số. Sau đó trong 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 cổ tức,
17 / 12 = 1 R 5
5 / 12 = 0 R 5
08.

Nhà điều hành Modulo và 17 / 12 = 1 R 5 5 / 12 = 0 R 5 50

Python có chức năng tích hợp

17 / 12 = 1 R 5
5 / 12 = 0 R 5
50, sử dụng nội bộ toán tử modulo.
17 / 12 = 1 R 5
5 / 12 = 0 R 5
50 lấy hai tham số và trả về một tuple chứa kết quả phân chia sàn và modulo bằng các tham số được cung cấp.

Dưới đây là một ví dụ về việc sử dụng

17 / 12 = 1 R 5
5 / 12 = 0 R 5
50 với
17 / 12 = 1 R 5
5 / 12 = 0 R 5
54 và
r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

3:

>>>

17 / 12 = 1 R 5
5 / 12 = 0 R 5
0

Bạn có thể thấy rằng

17 / 12 = 1 R 5
5 / 12 = 0 R 5
56 trả về tuple
17 / 12 = 1 R 5
5 / 12 = 0 R 5
57.
17 / 12 = 1 R 5
5 / 12 = 0 R 5
58 là kết quả của bộ phận sàn
17 / 12 = 1 R 5
5 / 12 = 0 R 5
54 và
r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

3.
17 / 12 = 1 R 5
5 / 12 = 0 R 5
28 là kết quả của
17 / 12 = 1 R 5
5 / 12 = 0 R 5
54 modulo
r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

3.

Dưới đây là một ví dụ trong đó tham số thứ hai là số âm. Như đã thảo luận trong phần trước, khi toán tử modulo được sử dụng với

17 / 12 = 1 R 5
5 / 12 = 0 R 5
03, phần còn lại sẽ lấy dấu hiệu của ước số:

>>>

17 / 12 = 1 R 5
5 / 12 = 0 R 5
1

Bây giờ, bạn đã có cơ hội nhìn thấy toán tử modulo được sử dụng trong một số kịch bản, điều quan trọng là phải xem 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.

Nhà điều hành Modulo ưu tiên

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 ưu tiên của nó khi đánh giá các biểu thức. Toán tử Modulo (

>>> 13.3 % 1.1
0.09999999999999964

>>> import math
>>> math.fmod(13.3, 1.1)
0.09999999999999964
9) có cùng mức độ ưu tiên như phép nhân (
17 / 12 = 1 R 5
5 / 12 = 0 R 5
66), bộ phận (
17 / 12 = 1 R 5
5 / 12 = 0 R 5
10) và các toán tử phân chia sàn (
17 / 12 = 1 R 5
5 / 12 = 0 R 5
68).

Hãy xem một ví dụ về toán tử modulo ưu tiên bên dưới:

>>>

17 / 12 = 1 R 5
5 / 12 = 0 R 5
2

Cả hai 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. Dưới đây là các bước cho hoạt động trên:

  1. 17 / 12 = 1 R 5
    5 / 12 = 0 R 5
    
    69 được đánh giá, dẫn đến
    17 / 12 = 1 R 5
    5 / 12 = 0 R 5
    
    70.
    is evaluated, resulting in
    17 / 12 = 1 R 5
    5 / 12 = 0 R 5
    
    70.
  2. 17 / 12 = 1 R 5
    5 / 12 = 0 R 5
    
    71 được đánh giá, dẫn đến
    17 / 12 = 1 R 5
    5 / 12 = 0 R 5
    
    72.
    is evaluated, resulting in
    17 / 12 = 1 R 5
    5 / 12 = 0 R 5
    
    72.
  3. 17 / 12 = 1 R 5
    5 / 12 = 0 R 5
    
    72 được đánh giá, dẫn đến
    17 / 12 = 1 R 5
    5 / 12 = 0 R 5
    
    74.
    is evaluated, resulting in
    17 / 12 = 1 R 5
    5 / 12 = 0 R 5
    
    74.

Nếu bạn muốn ghi đè lên mức độ ư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 hoạt động bạn muốn được đánh giá trước:

>>>

17 / 12 = 1 R 5
5 / 12 = 0 R 5
3

Cả hai 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. Dưới đây là các bước cho hoạt động trên:

17 / 12 = 1 R 5 5 / 12 = 0 R 5 69 được đánh giá, dẫn đến 17 / 12 = 1 R 5 5 / 12 = 0 R 5 70.

17 / 12 = 1 R 5
5 / 12 = 0 R 5
71 được đánh giá, dẫn đến
17 / 12 = 1 R 5
5 / 12 = 0 R 5
72.

17 / 12 = 1 R 5 5 / 12 = 0 R 5 72 được đánh giá, dẫn đến 17 / 12 = 1 R 5 5 / 12 = 0 R 5 74.

Nếu bạn muốn ghi đè lên mức độ ư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 hoạt động bạn muốn được đánh giá trước:

Trong ví dụ này,

17 / 12 = 1 R 5
5 / 12 = 0 R 5
75 được đánh giá đầu tiên, tiếp theo là
17 / 12 = 1 R 5
5 / 12 = 0 R 5
69 và cuối cùng là
17 / 12 = 1 R 5
5 / 12 = 0 R 5
77, tương đương với
17 / 12 = 1 R 5
5 / 12 = 0 R 5
78.

17 / 12 = 1 R 5
5 / 12 = 0 R 5
4

Nhà điều hành Modulo Python trong thực tế

Bây giờ, bạn đã trải qua những điều cơ bản của toán tử modulo Python, bạn sẽ xem xét một số ví dụ về việc sử dụng nó để 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ẽ cung cấp cho bạn một ý tưởng về nhiều cách nó có thể được sử dụng.

17 / 12 = 1 R 5
5 / 12 = 0 R 5
5

Cách kiểm tra xem một số chẵn hay lẻ

17 / 12 = 1 R 5
5 / 12 = 0 R 5
6

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ố chẵn hay số lẻ. Sử dụng toán tử modulo với mô đun là

17 / 12 = 1 R 5
5 / 12 = 0 R 5
28, bạn có thể kiểm tra bất kỳ số nào để xem nó có chia đều cho
17 / 12 = 1 R 5
5 / 12 = 0 R 5
28 không. Nếu nó chia đều, thì đó là một số chẵn.

Hãy xem

17 / 12 = 1 R 5
5 / 12 = 0 R 5
81 trong đó kiểm tra xem liệu tham số
17 / 12 = 1 R 5
5 / 12 = 0 R 5
82 có chẵn không:

>>>

17 / 12 = 1 R 5
5 / 12 = 0 R 5
7

Cả hai 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. Dưới đây là các bước cho hoạt động trên:

17 / 12 = 1 R 5
5 / 12 = 0 R 5
69 được đánh giá, dẫn đến
17 / 12 = 1 R 5
5 / 12 = 0 R 5
70.

>>>

17 / 12 = 1 R 5
5 / 12 = 0 R 5
8

Cả hai 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. Dưới đây là các bước cho hoạt động trên:

17 / 12 = 1 R 5
5 / 12 = 0 R 5
69 được đánh giá, dẫn đến
17 / 12 = 1 R 5
5 / 12 = 0 R 5
70.

17 / 12 = 1 R 5 5 / 12 = 0 R 5 71 được đánh giá, dẫn đến 17 / 12 = 1 R 5 5 / 12 = 0 R 5 72.

17 / 12 = 1 R 5
5 / 12 = 0 R 5
72 được đánh giá, dẫn đến
17 / 12 = 1 R 5
5 / 12 = 0 R 5
74.

Nếu bạn muốn ghi đè lên mức độ ư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 hoạt động bạn muốn được đánh giá trước:

17 / 12 = 1 R 5
5 / 12 = 0 R 5
9

Trong ví dụ này,

17 / 12 = 1 R 5
5 / 12 = 0 R 5
75 được đánh giá đầu tiên, tiếp theo là
17 / 12 = 1 R 5
5 / 12 = 0 R 5
69 và cuối cùng là
17 / 12 = 1 R 5
5 / 12 = 0 R 5
77, tương đương với
17 / 12 = 1 R 5
5 / 12 = 0 R 5
78.

Nhà điều hành Modulo Python trong thực tế

>>>

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
0

Bây giờ, bạn đã trải qua những điều cơ bản của toán tử modulo Python, bạn sẽ xem xét một số ví dụ về việc sử dụng nó để 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ẽ cung cấp cho bạn một ý tưởng về nhiều cách nó có thể được sử dụng.

>>>

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
1

Cách kiểm tra xem một số chẵn hay lẻ

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
2

Tiếp theo, bên trong vòng lặp, hàm gọi

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
22 để xuất
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
14 vào hàng hiện tại. Tham số
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
24 cho
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
22 là một chuỗi trống (
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
26) do đó, nó đã giành được đầu ra một dòng mới ở cuối chuỗi. Một chuỗi F được truyền đến
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
22, sử dụng cú pháp định dạng đầu ra chuỗi mà Python cung cấp:

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
3

Không cần đi vào quá nhiều chi tiết, cú pháp

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
28 bảo
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
22 làm như sau:

  • Đầu ra ít nhất
    >>> 15 % 4
    3
    
    >>> 17 % 12
    5
    
    >>> 240 % 13
    6
    
    >>> 10 % 16
    10
    
    30 ký tự, ngay cả khi chuỗi ngắn hơn 15 ký tự.
  • Trung tâm căn chỉnh 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ự dấu gạch nối (
    >>> 15 % 4
    3
    
    >>> 17 % 12
    5
    
    >>> 240 % 13
    6
    
    >>> 10 % 16
    10
    
    31).

Bây giờ tên đã được in ra hàng, hãy xem phần chính của

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
04:

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
4

Mã này lấy lần lặp hiện tại

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
15 và, sử dụng toán tử modulo, so sánh nó với
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
06. Nếu kết quả bằng
17 / 12 = 1 R 5
5 / 12 = 0 R 5
12, thì nó có thể chạy mã dành riêng cho khoảng thời gian. Trong trường hợp này, hàm gọi
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
22 để thêm một dòng mới, bắt đầu một hàng mới.

Mã trên chỉ là một ví dụ. Sử dụng mẫu

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
37 cho phép bạn chạy mã khác nhau trong các khoảng thời gian cụ thể trong các vòng lặp của bạn. Trong phần tiếp theo, bạn sẽ đưa khái niệm này đi xa hơn một chút và nhìn vào việc lặp lại theo chu kỳ.

Cách tạo phép lặp theo chu kỳ

Lặp lại theo chu kỳ mô tả một loại lặp sẽ đặt lại một khi nó đến một điểm nhất định. Nói chung, loại lặp này được sử dụng để hạn chế chỉ số của phép lặp ở một phạm vi nhất định. describes a type of iteration that will reset once it gets to a certain point. Generally, this type of iteration is used to restrict the index of the iteration to a certain range.

Bạn có thể sử dụng toán tử modulo để tạo vòng lặp theo chu kỳ. Hãy xem một ví dụ bằng thư viện

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
38 để vẽ hình dạng:

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
5

Mã trên sử dụng một vòng lặp vô hạn để vẽ hình dạng sao lặp lại. Sau sáu lần lặp lại, nó thay đổi màu của bút. Kích thước bút tăng theo từng lần lặp cho đến khi

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
39 được đặt lại về
17 / 12 = 1 R 5
5 / 12 = 0 R 5
12. 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:

Hướng dẫn modulo in python example - mô-đun trong ví dụ python

Các phần quan trọng của mã này được tô sáng dưới đây:

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
6

Mỗi lần thông qua vòng lặp,

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
39 được cập nhật dựa trên kết quả của
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
42. Giá trị
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
39 mới này được sử dụng để tăng
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
44 với mỗi lần lặp. Khi
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
39 đạt
r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

3,
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
42 sẽ bằng
17 / 12 = 1 R 5
5 / 12 = 0 R 5
12 và
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
39 sẽ đặt lại về
17 / 12 = 1 R 5
5 / 12 = 0 R 5
12.

Bạn có thể thấy các bước của lần lặp dưới đây để làm rõ hơn:

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
7

Khi

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
39 được đặt lại về
17 / 12 = 1 R 5
5 / 12 = 0 R 5
12,
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
53 thay đổi thành màu ngẫu nhiên mới như được thấy dưới đây:

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
8

Mã trong phần này sử dụng

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
54 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ị
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
39.

Cách chuyển đổi các đơn vị

Trong phần này, bạn sẽ xem xét cách bạn có thể sử dụng toán tử modulo để chuyển đổi các đơn vị. Các ví dụ sau đây 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 cần 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 bởi đơn vị lớn hơn.

Trong ví dụ đầu tiên này, bạn sẽ chuyển đổi inch thành chân. Toán tử modulo được sử dụng để có được các inch còn lại mà don đều chia thành đôi chân. Nhà điều hành phân chia sàn (

17 / 12 = 1 R 5
5 / 12 = 0 R 5
68) được sử dụng để có được tổng số chân được làm tròn xuống:

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
9

Ở đây, một ví dụ về chức năng đang sử dụng:

>>>

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
0

Như bạn có thể thấy từ đầu ra,

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
57 trả về
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
54, đó là những inch còn lại mà weren chia đều thành chân. Kết quả của
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
59 là
17 / 12 = 1 R 5
5 / 12 = 0 R 5
54, đó là tổng số feet mà các inch được chia đều.

Bạn có thể đưa điều này thêm một chút trong ví dụ tiếp theo này.

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
61 mất một số nguyên,
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
62, đại diện cho một số phút và xuất ra khoảng thời gian tính theo ngày, giờ và phút:

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
1

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
    >>> 15 % 4
    3
    
    >>> 17 % 12
    5
    
    >>> 240 % 13
    6
    
    >>> 10 % 16
    10
    
    63, trong đó
    >>> 15 % 4
    3
    
    >>> 17 % 12
    5
    
    >>> 240 % 13
    6
    
    >>> 10 % 16
    10
    
    64 là số phút trong một ngày
  2. Tính toán bất kỳ
    >>> 15 % 4
    3
    
    >>> 17 % 12
    5
    
    >>> 240 % 13
    6
    
    >>> 10 % 16
    10
    
    65 còn lại với
    >>> 15 % 4
    3
    
    >>> 17 % 12
    5
    
    >>> 240 % 13
    6
    
    >>> 10 % 16
    10
    
    66
  3. Sử dụng
    >>> 15 % 4
    3
    
    >>> 17 % 12
    5
    
    >>> 240 % 13
    6
    
    >>> 10 % 16
    10
    
    65 để có được
    >>> 15 % 4
    3
    
    >>> 17 % 12
    5
    
    >>> 240 % 13
    6
    
    >>> 10 % 16
    10
    
    68 chia đều và bất kỳ
    >>> 15 % 4
    3
    
    >>> 17 % 12
    5
    
    >>> 240 % 13
    6
    
    >>> 10 % 16
    10
    
    69 nào

Bạn có thể thấy cách nó hoạt động dưới đây:

>>>

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
2

Như bạn có thể thấy từ đầu ra,

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
57 trả về
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
54, đó là những inch còn lại mà weren chia đều thành chân. Kết quả của
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
59 là
17 / 12 = 1 R 5
5 / 12 = 0 R 5
54, đó là tổng số feet mà các inch được chia đều.

Bạn có thể đưa điều này thêm một chút trong ví dụ tiếp theo này.

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
61 mất một số nguyên,
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
62, đại diện cho một số phút và xuất ra khoảng thời gian tính theo ngày, giờ và phút:

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

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ố không. Một số nguyên tố là bất kỳ số nào chỉ chứa hai yếu tố,

17 / 12 = 1 R 5
5 / 12 = 0 R 5
78 và chính nó. Một số ví dụ về số nguyên tố là
17 / 12 = 1 R 5
5 / 12 = 0 R 5
28,
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
11,
r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

3,
17 / 12 = 1 R 5
5 / 12 = 0 R 5
58,
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
75,
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
76,
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
77,
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
78 và
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
79.prime number. A prime number is any number that contains only two factors,
17 / 12 = 1 R 5
5 / 12 = 0 R 5
78 and itself. Some examples of prime numbers are
17 / 12 = 1 R 5
5 / 12 = 0 R 5
28,
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
11,
r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

3,
17 / 12 = 1 R 5
5 / 12 = 0 R 5
58,
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
75,
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
76,
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
77,
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
78, and
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
79.

Mã bên dưới là triển khai để xác định tính nguyên thủy của một số bằng toán tử modulo:

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
3

Mã này xác định

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
80, lấy tham số
17 / 12 = 1 R 5
5 / 12 = 0 R 5
82 và kiểm tra xem nó có phải là số nguyên tố không. Nếu có, thì một tin nhắn được hiển thị cho biết
17 / 12 = 1 R 5
5 / 12 = 0 R 5
82 là số nguyên tố. Nếu nó không phải là một số nguyên tố, thì một tin nhắn được hiển thị với tất cả các yếu tố của số.

Trước khi bạn nhìn kỹ hơn vào chức năng, đây là kết quả sử dụng một số số khác nhau:

>>>

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
4

Đào vào mã, bạn có thể thấy nó bắt đầu bằng cách kiểm tra xem

17 / 12 = 1 R 5
5 / 12 = 0 R 5
82 có nhỏ hơn
17 / 12 = 1 R 5
5 / 12 = 0 R 5
28 không. Số nguyên tố chỉ có thể lớn hơn hoặc bằng
17 / 12 = 1 R 5
5 / 12 = 0 R 5
28. Nếu
17 / 12 = 1 R 5
5 / 12 = 0 R 5
82 nhỏ hơn
17 / 12 = 1 R 5
5 / 12 = 0 R 5
28, thì chức năng không cần phải tiếp tục. Nó sẽ
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
22 một tin nhắn và
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
89:

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
5

Nếu

17 / 12 = 1 R 5
5 / 12 = 0 R 5
82 lớn hơn
17 / 12 = 1 R 5
5 / 12 = 0 R 5
28, thì hàm sẽ kiểm tra xem
17 / 12 = 1 R 5
5 / 12 = 0 R 5
82 là số nguyên tố. Để kiểm tra điều này, hàm đã lặp lại trên tất cả các số giữa
17 / 12 = 1 R 5
5 / 12 = 0 R 5
28 và căn bậc hai của
17 / 12 = 1 R 5
5 / 12 = 0 R 5
82 để xem liệu có phân chia đồng đều thành
17 / 12 = 1 R 5
5 / 12 = 0 R 5
82 không. Nếu một trong những con số phân chia đều, thì một yếu tố đã được tìm thấy và
17 / 12 = 1 R 5
5 / 12 = 0 R 5
82 có thể là một số nguyên tố.

Ở đây, phần chính của chức năng:

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
6

Có rất nhiều thứ để giải nén ở đây, vì vậy, hãy để thực hiện từng bước.

Đầu tiên, danh sách

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
97 được tạo với các yếu tố ban đầu,
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
98. 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:

Tiếp theo, bắt đầu với

17 / 12 = 1 R 5
5 / 12 = 0 R 5
28, mã tăng
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
39 cho đến khi nó đạt đến căn bậc hai của
17 / 12 = 1 R 5
5 / 12 = 0 R 5
82. Tại mỗi lần lặp, nó so sánh
17 / 12 = 1 R 5
5 / 12 = 0 R 5
82 với
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
39 để xem nó có chia hết không. Mã chỉ cần kiểm tra và bao gồm cả căn bậc hai của
17 / 12 = 1 R 5
5 / 12 = 0 R 5
82 vì nó sẽ không chứa bất kỳ yếu tố nào trên:

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
7

Thay vì cố gắng xác định căn bậc hai của

17 / 12 = 1 R 5
5 / 12 = 0 R 5
82, hàm sử dụng vòng
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
06 để xem
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
07. Miễn là
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
07, vòng lặp đã đạt đến căn bậc hai của
17 / 12 = 1 R 5
5 / 12 = 0 R 5
82.

Bên trong vòng

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
06, toán tử modulo kiểm tra xem
17 / 12 = 1 R 5
5 / 12 = 0 R 5
82 có chia hết bởi
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
39:

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
8

Nếu

17 / 12 = 1 R 5
5 / 12 = 0 R 5
82 chia đều cho
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
39, thì
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
39 là yếu tố của
17 / 12 = 1 R 5
5 / 12 = 0 R 5
82 và một bộ phận của các yếu tố được thêm vào danh sách
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
97.

Khi vòng lặp

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
06 hoàn tất, mã sẽ kiểm tra xem liệu có bất kỳ yếu tố bổ sung nào được tìm thấy không:

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
9

Nếu có nhiều hơn một tuple tồn tại trong danh sách

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
97, thì
17 / 12 = 1 R 5
5 / 12 = 0 R 5
82 có thể là một số nguyên tố. Đối với các số phi dự án, các yếu tố được in ra. Đối với các số nguyên tố, hàm in một thông báo cho biết
17 / 12 = 1 R 5
5 / 12 = 0 R 5
82 là số nguyên tố.

Cách thực hiện mật mã

Toán tử modulo Python có thể được sử dụng để tạo mật mã. Một 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ẽ nhìn vào hai mật mã, mật mã Caesar và mật mã Vigenère.Caesar cipher and the Vigenère cipher.

Caesar Mật mã

Mật mã đầu tiên mà bạn sẽ nhìn vào là Mật mã Caesar, được đặt theo tên của Julius Caesar, người đã sử dụng nó để bí mật truyền đạt các tin nhắn. Nó có 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 lá thư để được mã hóa và chuyển nó một số vị trí nhất định sang trái hoặc phải 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 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à

r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

3, thì
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
23 sẽ chuyển năm chữ cái để trở thành
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
24,
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
25 sẽ trở thành
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
26, v.v. Dưới đây bạn có thể thấy quá trình mã hóa cho văn bản
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
27 với sự thay đổi
r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

3:

Hướng dẫn modulo in python example - mô-đun trong ví dụ python

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

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
29.

Giải mã mật mã được thực hiện bằng cách đảo ngược sự thay đổi. Cả hai quá trình mã hóa và giải mã đều có thể được mô tả với các biểu thức sau, trong đó

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
30 là chỉ số của ký tự trong bảng chữ cái:

>>> 12.5 % 5.5
1.5

>>> 17.0 % 12.0
5.0
0

Mật mã này sử dụng toán tử modulo để đảm bảo rằng, khi chuyển một chữ cái, chỉ mục sẽ quấn xung quanh nếu kết thúc của 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 một triển khai:

>>> 12.5 % 5.5
1.5

>>> 17.0 % 12.0
5.0
1

Mã này xác định một hàm gọi là

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
31, có hai tham số bắt buộc và một tham số tùy chọn:

  • >>> 22 % 0
    ZeroDivisionError: integer division or modulo by zero
    
    32 là văn bản được mã hóa hoặc giải mã.
    is the text to be encrypted or decrypted.
  • >>> 22 % 0
    ZeroDivisionError: integer division or modulo by zero
    
    33 là số lượng vị trí để thay đổi mỗi chữ cái.
    is the number of positions to shift each letter.
  • >>> 22 % 0
    ZeroDivisionError: integer division or modulo by zero
    
    34 là một boolean để thiết lập nếu
    >>> 22 % 0
    ZeroDivisionError: integer division or modulo by zero
    
    32 nên được giải mã.
    is a Boolean to set if
    >>> 22 % 0
    ZeroDivisionError: integer division or modulo by zero
    
    32 should be decrypted.

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
34 được bao gồm để có thể sử dụng một hàm 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 đó, chức năng trước tiên kiểm tra rằng
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
32 là ký tự chữ cái trong mã hóa ASCII:

>>> 12.5 % 5.5
1.5

>>> 17.0 % 12.0
5.0
2

Hàm sau đó xác định ba biến để lưu trữ các ký tự

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
38 ASCII, các ký tự ____339 ASCII và kết quả mã hóa hoặc giải mã:

>>> 12.5 % 5.5
1.5

>>> 17.0 % 12.0
5.0
3

Tiếp theo, nếu chức năng được sử dụng để giải mã

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
32, thì nó sẽ nhân
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
33 bằng
17 / 12 = 1 R 5
5 / 12 = 0 R 5
30 để làm cho nó thay đổi ngược:

>>> 12.5 % 5.5
1.5

>>> 17.0 % 12.0
5.0
4

Cuối cùng,

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
31 vòng lặp trên các ký tự riêng lẻ trong
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
32 và thực hiện các hành động sau cho mỗi
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
45:

  1. Kiểm tra xem
    >>> 22 % 0
    ZeroDivisionError: integer division or modulo by zero
    
    45 là chữ thường hoặc chữ hoa.
  2. Nhận
    >>> 15 % 4
    3
    
    >>> 17 % 12
    5
    
    >>> 240 % 13
    6
    
    >>> 10 % 16
    10
    
    15 của
    >>> 22 % 0
    ZeroDivisionError: integer division or modulo by zero
    
    45 trong danh sách
    >>> 22 % 0
    ZeroDivisionError: integer division or modulo by zero
    
    38 hoặc
    >>> 22 % 0
    ZeroDivisionError: integer division or modulo by zero
    
    39 ASCII.
  3. Thêm
    >>> 22 % 0
    ZeroDivisionError: integer division or modulo by zero
    
    33 vào
    >>> 15 % 4
    3
    
    >>> 17 % 12
    5
    
    >>> 240 % 13
    6
    
    >>> 10 % 16
    10
    
    15 này để xác định chỉ số của ký tự mật mã để sử dụng.
  4. Sử dụng
    >>> 22 % 0
    ZeroDivisionError: integer division or modulo by zero
    
    53 để đảm bảo rằng sự thay đổi sẽ kết thúc trở lại bắt đầu bảng chữ cái.
  5. Nối ký tự mật mã vào chuỗi
    >>> 22 % 0
    ZeroDivisionError: integer division or modulo by zero
    
    54.

Sau khi vòng lặp kết thúc lặp lại giá trị

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
32,
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
54 được trả về:

>>> 12.5 % 5.5
1.5

>>> 17.0 % 12.0
5.0
5

Đây là mã đầy đủ một lần nữa:

>>> 12.5 % 5.5
1.5

>>> 17.0 % 12.0
5.0
1

Bây giờ hãy chạy mã trong Python Repling bằng văn bản

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
57 với sự thay đổi
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
58:

>>>

>>> 12.5 % 5.5
1.5

>>> 17.0 % 12.0
5.0
7

Kết quả được mã hóa là

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
59. 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:

>>>

>>> 12.5 % 5.5
1.5

>>> 17.0 % 12.0
5.0
8

Kết quả được mã hóa là

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
59. 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:

Mật mã Caesar rất vui khi chơi xung quanh để giới thiệu về mật mã. Mặc dù mật mã Caesar hiếm khi được sử dụng một mình, 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ẽ nhìn vào một trong những con cháu của Caesar Mật mã, mật mã Vigenère.

Vigenère mật mã

Mật mã Vigenère là một mật mã thay thế polyalphabetic. Để thực hiện mã hóa của nó, nó sử dụng một mật mã Caesar khác nhau cho mỗi chữ cái của văn bản đầu vào. Mật mã Vigenère sử dụng từ khóa để xác định mật mã Caesar nào nên được sử dụng để tìm chữ cái mật mã.

Hướng dẫn modulo in python example - mô-đun trong ví dụ python

Bạn có thể thấy 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

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
27 được mã hóa bằng từ khóa
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
61:

Đối với mỗi chữ cái của văn bản đầu vào,

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
27, một chữ cái từ từ khóa
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
61 được sử dụng để xác định cột mật mã Caesar nào nên được chọn. Nếu từ khóa ngắn hơn văn bản đầu vào, như trường hợp với
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
61, thì các chữ cái của từ khóa đượ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.

>>> 12.5 % 5.5
1.5

>>> 17.0 % 12.0
5.0
9

Dưới đây là một triển khai của mật mã Vigenère. Như bạn thấy, toán tử modulo được sử dụng hai lần trong hàm:

>>> import math
>>> math.fmod(12.5, 5.5)
1.5

>>> math.fmod(8.5, 2.5)
1.0
0

Bạn có thể nhận thấy rằng chữ ký cho

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
65 khá giống với
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
31 từ phần trước:

Sự khác biệt chính là, thay vì tham số

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
33,
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
65 có tham số
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
69, 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 khác là việc bổ sung
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
70. Dựa trên việc triển khai này,
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
65 chỉ có thể chấp nhận văn bản đầu vào là tất cả các chữ hoa.

>>> import math
>>> math.fmod(12.5, 5.5)
1.5

>>> math.fmod(8.5, 2.5)
1.0
1

Giống như

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
31,
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
65 lặp lại trên mỗi chữ cái của văn bản đầu vào để mã hóa hoặc giải mã nó:

>>> import math
>>> math.fmod(12.5, 5.5)
1.5

>>> math.fmod(8.5, 2.5)
1.0
2

Trong mã trên, bạn có thể thấy chức năng sử dụng đầu tiên của toán tử modulo:

Ở đây, giá trị

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
74 được xác định dựa trên một chỉ mục được trả về từ
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
75. Chỉ mục này được sử dụng để chọn một chữ cái từ chuỗi
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
69, chẳng hạn như
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
77 từ
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
61.

Toán tử modulo cho phép bạn sử dụng bất kỳ từ khóa độ dài nào bất kể độ dài của

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
32 sẽ được mã hóa. Khi chỉ mục
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
39, chỉ mục của ký tự hiện đang được mã hóa, bằng độ dài của từ khóa, nó sẽ bắt đầu lại từ đầu từ khóa.

  1. Đố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ó:
  2. Xác định
    >>> 22 % 0
    ZeroDivisionError: integer division or modulo by zero
    
    30 dựa trên chỉ số của
    >>> 22 % 0
    ZeroDivisionError: integer division or modulo by zero
    
    45 bên trong
    >>> 22 % 0
    ZeroDivisionError: integer division or modulo by zero
    
    39.
  3. Xác định
    >>> 22 % 0
    ZeroDivisionError: integer division or modulo by zero
    
    84 dựa trên chỉ số của
    >>> 22 % 0
    ZeroDivisionError: integer division or modulo by zero
    
    74 bên trong
    >>> 22 % 0
    ZeroDivisionError: integer division or modulo by zero
    
    39.

Sử dụng

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
30 và
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
84 để lấy chỉ mục cho ký tự được mã hóa hoặc giải mã.

>>> import math
>>> math.fmod(12.5, 5.5)
1.5

>>> math.fmod(8.5, 2.5)
1.0
3

Hãy xem các bước này trong mã bên dưới:

Sau khi

>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
15 được xác định, bạn tìm thấy chức năng sử dụng thứ hai của toán tử modulo:

>>> import math
>>> math.fmod(12.5, 5.5)
1.5

>>> math.fmod(8.5, 2.5)
1.0
4

>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
91 đảm bảo rằng
>>> 15 % 4
3

>>> 17 % 12
5

>>> 240 % 13
6

>>> 10 % 16
10
15 của nhân vật không vượt quá
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
93, do đó đảm bảo nó ở bên trong bảng chữ cái. Với chỉ số này, ký tự được mã hóa hoặc giải mã được chọn từ
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
39 và được thêm vào
>>> 22 % 0
ZeroDivisionError: integer division or modulo by zero
95.

Tại đây, mã đầy đủ của mật mã Vigenère một lần nữa:

>>> 12.5 % 5.5
1.5

>>> 17.0 % 12.0
5.0
9

Bây giờ hãy tiếp tục và chạy nó trong Python Repls:

>>>

>>> import math
>>> math.fmod(12.5, 5.5)
1.5

>>> math.fmod(8.5, 2.5)
1.0
6

Tốt đẹp! Bây giờ bạn có một mật mã Vigenère hoạt động để mã hóa các chuỗi văn bản.

Nhà điều hành Modulo Python sử dụng nâng cao

Trong phần cuối cùng này, bạn sẽ đưa kiến ​​thức toán tử modulo của mình lên cấp độ tiếp theo bằng cách sử dụng nó với

17 / 12 = 1 R 5
5 / 12 = 0 R 5
08. Bạn cũng sẽ xem xét cách bạn có thể thêm
r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

0 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 Python với 17 / 12 = 1 R 5 5 / 12 = 0 R 5 08

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ư

17 / 12 = 1 R 5
5 / 12 = 0 R 5
03 và
17 / 12 = 1 R 5
5 / 12 = 0 R 5
04 cũng như với
17 / 12 = 1 R 5
5 / 12 = 0 R 5
07. Bạn cũng có thể sử dụng toán tử modulo với
>>> 12.5 % 5.5
1.5

>>> 17.0 % 12.0
5.0
02 từ mô -đun
>>> 12.5 % 5.5
1.5

>>> 17.0 % 12.0
5.0
03. Bạn sử dụng
17 / 12 = 1 R 5
5 / 12 = 0 R 5
08 khi bạn muốn kiểm soát riêng biệt độ chính xác của các hoạt động 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

17 / 12 = 1 R 5
5 / 12 = 0 R 5
08 và toán tử modulo:

>>>

>>> import math
>>> math.fmod(12.5, 5.5)
1.5

>>> math.fmod(8.5, 2.5)
1.0
7

Tốt đẹp! Bây giờ bạn có một mật mã Vigenère hoạt động để mã hóa các chuỗi văn bản.

>>>

>>> import math
>>> math.fmod(12.5, 5.5)
1.5

>>> math.fmod(8.5, 2.5)
1.0
8

Tốt đẹp! Bây giờ bạn có một mật mã Vigenère hoạt động để mã hóa các chuỗi văn bản.

Nhà điều hành Modulo Python sử dụng nâng cao

>>>

>>> import math
>>> math.fmod(12.5, 5.5)
1.5

>>> math.fmod(8.5, 2.5)
1.0
9

Tốt đẹp! Bây giờ bạn có một mật mã Vigenère hoạt động để mã hóa các chuỗi văn bản.

>>>

>>> 13.3 % 1.1
0.09999999999999964

>>> import math
>>> math.fmod(13.3, 1.1)
0.09999999999999964
0

Tốt đẹp! Bây giờ bạn có một mật mã Vigenère hoạt động để mã hóa các chuỗi văn bản.

Nhà điều hành Modulo Python sử dụng nâng cao

Trong phần cuối cùng này, bạn sẽ đưa kiến ​​thức toán tử modulo của mình lên cấp độ tiếp theo bằng cách sử dụng nó với 17 / 12 = 1 R 5 5 / 12 = 0 R 5 08. Bạn cũng sẽ xem xét cách bạn có thể thêm r = 8 - (-3 * trunc(8/-3)) r = 8 - (-3 * trunc(-2.666666666667)) r = 8 - (-3 * -2) # Rounded toward 0 r = 8 - 6 r = 2 0 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 Python với

17 / 12 = 1 R 5
5 / 12 = 0 R 5
08

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ư

17 / 12 = 1 R 5
5 / 12 = 0 R 5
03 và
17 / 12 = 1 R 5
5 / 12 = 0 R 5
04 cũng như với
17 / 12 = 1 R 5
5 / 12 = 0 R 5
07. Bạn cũng có thể sử dụng toán tử modulo với
>>> 12.5 % 5.5
1.5

>>> 17.0 % 12.0
5.0
02 từ mô -đun
>>> 12.5 % 5.5
1.5

>>> 17.0 % 12.0
5.0
03. Bạn sử dụng
17 / 12 = 1 R 5
5 / 12 = 0 R 5
08 khi bạn muốn kiểm soát riêng biệt độ chính xác của các hoạt động số học dấu phẩy động.

>>> 13.3 % 1.1
0.09999999999999964

>>> import math
>>> math.fmod(13.3, 1.1)
0.09999999999999964
1

Dưới đây là một số ví dụ về việc sử dụng toàn bộ số nguyên với

17 / 12 = 1 R 5
5 / 12 = 0 R 5
08 và toán tử modulo:

Dưới đây là một số số điểm nổi được sử dụng với

17 / 12 = 1 R 5
5 / 12 = 0 R 5
08 và toán tử modulo:

>>> 13.3 % 1.1
0.09999999999999964

>>> import math
>>> math.fmod(13.3, 1.1)
0.09999999999999964
2

Tất cả các hoạt động của modulo với

17 / 12 = 1 R 5
5 / 12 = 0 R 5
08 trả về kết quả giống nhau như các loại số khác, ngoại trừ khi một trong các toán hạng là âm. Không giống như
17 / 12 = 1 R 5
5 / 12 = 0 R 5
03 và
17 / 12 = 1 R 5
5 / 12 = 0 R 5
04, nhưng như
17 / 12 = 1 R 5
5 / 12 = 0 R 5
07,
17 / 12 = 1 R 5
5 / 12 = 0 R 5
08 sử dụng dấu hiệu của cổ tức cho kết quả.

>>> 13.3 % 1.1
0.09999999999999964

>>> import math
>>> math.fmod(13.3, 1.1)
0.09999999999999964
3

Hãy xem các ví dụ dưới đây 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

17 / 12 = 1 R 5
5 / 12 = 0 R 5
03 và
17 / 12 = 1 R 5
5 / 12 = 0 R 5
04 và với
17 / 12 = 1 R 5
5 / 12 = 0 R 5
08:

>>>

>>> 13.3 % 1.1
0.09999999999999964

>>> import math
>>> math.fmod(13.3, 1.1)
0.09999999999999964
4

Tốt đẹp! Bây giờ bạn có một mật mã Vigenère hoạt động để mã hóa các chuỗi văn bản.

Nhà điều hành Modulo Python sử dụng nâng cao

>>> 13.3 % 1.1
0.09999999999999964

>>> import math
>>> math.fmod(13.3, 1.1)
0.09999999999999964
5

Trong phần cuối cùng này, bạn sẽ đưa kiến ​​thức toán tử modulo của mình lên cấp độ tiếp theo bằng cách sử dụng nó với

17 / 12 = 1 R 5
5 / 12 = 0 R 5
08. Bạn cũng sẽ xem xét cách bạn có thể thêm
r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

0 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 Python với

17 / 12 = 1 R 5
5 / 12 = 0 R 5
08

>>> 13.3 % 1.1
0.09999999999999964

>>> import math
>>> math.fmod(13.3, 1.1)
0.09999999999999964
6

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ư

17 / 12 = 1 R 5
5 / 12 = 0 R 5
03 và
17 / 12 = 1 R 5
5 / 12 = 0 R 5
04 cũng như với
17 / 12 = 1 R 5
5 / 12 = 0 R 5
07. Bạn cũng có thể sử dụng toán tử modulo với
>>> 12.5 % 5.5
1.5

>>> 17.0 % 12.0
5.0
02 từ mô -đun
>>> 12.5 % 5.5
1.5

>>> 17.0 % 12.0
5.0
03. Bạn sử dụng
17 / 12 = 1 R 5
5 / 12 = 0 R 5
08 khi bạn muốn kiểm soát riêng biệt độ chính xác của các hoạt động số học dấu phẩy động.

>>> 13.3 % 1.1
0.09999999999999964

>>> import math
>>> math.fmod(13.3, 1.1)
0.09999999999999964
7

Dưới đây là một số ví dụ về việc sử dụng toàn bộ số nguyên với

17 / 12 = 1 R 5
5 / 12 = 0 R 5
08 và toán tử modulo:

>>>

>>> 13.3 % 1.1
0.09999999999999964

>>> import math
>>> math.fmod(13.3, 1.1)
0.09999999999999964
8

Tốt đẹp! Bây giờ bạn có một mật mã Vigenère hoạt động để mã hóa các chuỗi văn bản.

Nhà điều hành Modulo Python sử dụng nâng cao

Trong phần cuối cùng này, bạn sẽ đưa kiến ​​thức toán tử modulo của mình lên cấp độ tiếp theo bằng cách sử dụng nó với

17 / 12 = 1 R 5
5 / 12 = 0 R 5
08. Bạn cũng sẽ xem xét cách bạn có thể thêm
r = 8 - (-3 * trunc(8/-3))
r = 8 - (-3 * trunc(-2.666666666667))
r = 8 - (-3 * -2) # Rounded toward 0
r = 8 - 6
r = 2

0 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.

Trong hướng dẫn này, bạn đã học được cách:

  • Sử dụng toán tử modulo với
    17 / 12 = 1 R 5
    5 / 12 = 0 R 5
    
    03,
    17 / 12 = 1 R 5
    5 / 12 = 0 R 5
    
    04,
    17 / 12 = 1 R 5
    5 / 12 = 0 R 5
    
    07,
    17 / 12 = 1 R 5
    5 / 12 = 0 R 5
    
    50 và
    17 / 12 = 1 R 5
    5 / 12 = 0 R 5
    
    08modulo operator with
    17 / 12 = 1 R 5
    5 / 12 = 0 R 5
    
    03,
    17 / 12 = 1 R 5
    5 / 12 = 0 R 5
    
    04,
    17 / 12 = 1 R 5
    5 / 12 = 0 R 5
    
    07,
    17 / 12 = 1 R 5
    5 / 12 = 0 R 5
    
    50, and
    17 / 12 = 1 R 5
    5 / 12 = 0 R 5
    
    08
  • Tính kết quả của hoạt động modulomodulo operation
  • Giải quyết các vấn đề trong thế giới thực bằng toán tử moduloreal-world problems using the modulo operator
  • Ghi đè
    r = 8 - (-3 * trunc(8/-3))
    r = 8 - (-3 * trunc(-2.666666666667))
    r = 8 - (-3 * -2) # Rounded toward 0
    r = 8 - 6
    r = 2
    
    
    0 trong các lớp của riêng bạn để sử dụng chúng với toán tử modulo
    r = 8 - (-3 * trunc(8/-3))
    r = 8 - (-3 * trunc(-2.666666666667))
    r = 8 - (-3 * -2) # Rounded toward 0
    r = 8 - 6
    r = 2
    
    
    0
    in your own classes to use them with the modulo operator

Với kiến thức mà bạn đã đạt đượ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 bạn với thành công lớn.Happy Pythoning!

Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự.Xem nó cùng với hướng dẫn bằng văn bản để làm sâu sắc thêm sự hiểu biết của bạn: Python Modulo: Sử dụng toán tử % This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Python Modulo: Using the % Operator