Làm thế nào để bạn tìm thấy phần còn lại trong python mà không cần mô-đun?
Trong chương trình này, chúng tôi sẽ đọc hai số nguyên từ người dùng và tìm phần còn lại mà không sử dụng toán tử mô đun "%" Show
Chương trình/Mã nguồn Mã nguồn để tìm phần còn lại mà không sử dụng toán tử mô đun '%' được cung cấp bên dưới. Chương trình đã cho được biên dịch và thực thi thành công // Java program to find the remainder // without using the % operator import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner X = new Scanner(System.in); int num1 = 0; int num2 = 0; int rem = 0; System.out.printf("Enter first number: "); num1 = X.nextInt(); System.out.printf("Enter second number: "); num2 = X.nextInt(); rem = num1 - (num1 / num2) * num2; System.out.printf("Remainder is: %d", rem); } } đầu ra Enter first number: 21 Enter second number: 4 Remainder is: 1 Giải trình Trong chương trình trên, chúng tôi đã nhập "java. sử dụng. Scanner" để đọc đầu vào từ người dùng. Và, đã tạo một lớp công khai Chính. Nó chứa một phương thức tĩnh main(). Phương thức main() là điểm vào của chương trình. Ở đây, chúng tôi đọc hai số nguyên từ người dùng. Sau đó, chúng tôi tìm phần còn lại mà không sử dụng toán tử "%" #bao gồm 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 ( 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
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ọcThuậ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 2 để nhận giá trị tương đương trong ngữ cảnh mười hai giờ
3 trả lại 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ố 5 và áp dụng nó vào ngữ cảnh 6Bây giờ, nếu bạn nghĩ về nó, 5 và 4 là tương đương trong ngữ cảnh 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
Phương trình này viết “ 0 và 1 đồng dư theo modulo 2. ” Điều này có nghĩa là 0 và 1 bằng nhau trong 5 vì chúng có cùng số dư khi chia cho 2. Trong phương trình trên, 2 là mô đun của cả 0 và 1. Sử dụng các giá trị 5 và 4 từ trước đó, phương trình sẽ như thế này
Điều này có nghĩa là “ 5 và 4 là đồng dư theo modulo 04. ” 5 và 4 có cùng số dư, 4, khi chia cho 04. Vì vậy, trong 6, các số 5 và 4 là tương đươngBạn có thể xác nhận điều này bằng cách sử dụng phép chia
Cả hai phép toán đều có cùng số dư, 4, vì vậy chúng tương đương theo modulo 04Bâ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 những kiến thức cơ bản về cách sử dụng toán tử modulo Python với các loại số 14 và 15Loại bỏ các quảng cáoKhái niệm cơ bản về toán tử Modulo của PythonToá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ư 18, 19 và các lớp của riêng bạnToán Tử Modulo Với a ≡ b (mod n) 14Hầ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 >>>
Hãy cẩn thận. Cũng giống như với toán tử chia ( 21), Python sẽ trả về một giá trị 22 nếu bạn cố gắng sử dụng toán tử modulo với ước số là 23
Tiếp theo, bạn sẽ xem cách sử dụng toán tử modulo với 15Toán Tử Modulo Với a ≡ b (mod n) 15Tương tự như 14, toán tử modulo được sử dụng với 15 sẽ trả về phần còn lại của phép chia, nhưng dưới dạng giá trị 15>>>
Một cách thay thế cho việc sử dụng 15 với toán tử modulo là sử dụng 18 để thực hiện các thao tác modulo trên các giá trị 15>>>
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ị 15 do cách mà 18 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 35 và 36. Bạn sẽ khám phá cách sử dụng toán tử modulo với toán hạng âm chi tiết hơn trong phần tiếp theoCũng giống như các toán tử số học khác, toán tử modulo và 18 có thể gặp 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>>>
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 19. Bạn sẽ nhìn vào cái nàyToán tử modulo với toán hạng âmTấ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à 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
Phần dư trong ví dụ này, 39, là số dương vì nó mang dấu của số bị chia, 40. 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 0Ở đây bạn có thể thấy rằng phần còn lại, 41, lấy dấu của số chia, 42Bạn có thể thắc mắc tại sao phần còn lại trong JavaScript là 39 và phần còn lại trong Python là 41. Đ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 1Có ba biến phương trình này
48 trong phương trình này có nghĩa là nó sử dụng phép chia cắt ngắn, phép chia này 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 40 làm số bị chia và 42 làm ước số 2Tạ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 39. 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 3 52 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 4Ở đây bạn có thể thấy rằng kết quả là 41Bâ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 14 và 15 sẽ lấy dấu của số chia, các loại khác sẽ khôngBạn có thể xem một ví dụ về điều này khi so sánh kết quả của 56 và 57>>> 5 18 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 đó 15 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, 19Loại bỏ các quảng cáoToán tử Modulo và a ≡ b (mod n) 61Python có chức năng tích hợp sẵn, sử dụng bên trong toán tử modulo. 61 nhận hai tham số và trả về một bộ dữ liệu chứa kết quả phân chia sàn và modulo bằng cách sử dụng các tham số được cung cấpDưới đây là một ví dụ về việc sử dụng 61 với 65 và 4>>> 6Bạn có thể thấy rằng 67 trả về bộ dữ liệu 68. 69 là kết quả của sự phân chia tầng của 65 và 4. 39 là kết quả của 65 modulo 4Dưới đây là một ví dụ trong đó tham số thứ hai là một số âm. Như đã thảo luận trong phần trước, khi toán tử modulo được sử dụng với một 14, phần còn lại sẽ lấy dấu của ước số>>> 7Bâ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ử ModuloGiố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 ( 0) có cùng mức độ ưu tiên như toán tử nhân ( 77), chia ( 21) và chia sàn ( 79)Hãy xem một ví dụ về mức độ ưu tiên của toán tử modulo bên dưới >>> 8Cả 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
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 >>> 9Trong ví dụ này, 86 được đánh giá đầu tiên, tiếp theo là 80 và cuối cùng là 88, bằng với 89Toá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 với modulo là 39, bạn có thể kiểm tra bất kỳ số nào để xem nó có chia hết cho 39 không. Nếu chia hết thì là số chẵnHãy xem 92 để kiểm tra xem tham số 93 có chẵn không 0Có thể bạn quan tâmỞ đây 94 sẽ bằng 23 nếu 93 là chẵn và 89 nếu 93 là lẻ. Kiểm tra đối với 23 sẽ trả về giá trị Boolean của 00 hoặc 01 dựa trên việc 93 có chẵn hay khôngKiểm tra số lẻ hoàn toàn tương tự. Để kiểm tra một số lẻ, bạn đảo ngược kiểm tra đẳng thức 1Hàm này sẽ trả về 00 nếu 94 không bằng 23, nghĩa là có một số dư chứng tỏ 93 là một 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 93 có phải là số lẻ không 2Câ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 một phép toán modulo với 89 vì không phải tất cả các phép toán modulo trong Python sẽ trả về cùng một phần còn lạiBạn có thể thấy tại sao trong các ví dụ sau >>> 3Trong ví dụ thứ hai, phần còn lại lấy dấu của ước số âm và trả về 41. Trong trường hợp này, kiểm tra Boolean 10 sẽ trả về 01Tuy nhiên, nếu bạn so sánh phép toán modulo với 23, thì toán hạng nào âm không quan trọng. Kết quả sẽ luôn là 00 khi nó là một số chẵn>>> 4Nếu bạn cố gắng so sánh một phép toán modulo Python với 23, thì bạn sẽ không gặp bất kỳ vấn đề nào khi kiểm tra số chẵn và số lẻ hoặc bất kỳ bội số nào khác của một số trong mã của mìnhTrong phần tiếp theo, bạn sẽ xem cách bạn có thể sử dụng toán tử modulo với các vòng lặp để kiểm soát luồng chương trình của mình Loại bỏ các quảng cáoCách chạy mã ở các khoảng thời gian cụ thể trong một vòng lặpVớ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ụ 5Mã này định nghĩa 15, có hai tham số. 16 là danh sách các tên nên được chia thành các hàng. 17 đặt mô-đun cho hoạt động, xác định hiệu quả số lượng tên nên có trong mỗi hàng. 15 sẽ lặp qua 16 và bắt đầu một hàng mới sau khi nó đạt giá trị 17Trước khi chia nhỏ chức năng chi tiết hơn, hãy xem nó hoạt động >>> 6Như 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. 17 mặc định là 22, nhưng bạn có thể chỉ định bất kỳ số nào>>> 7Bâ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 23 để lặp lại trên 16, gán mục hiện tại trong danh sách là 25 và một giá trị đếm thành 26. Bạn có thể thấy rằng đối số tùy chọn 27 cho 23 được đặt thành 89. Điều này có nghĩa là số lượng 26 sẽ bắt đầu từ 89 thay vì 23 8Tiếp theo, bên trong vòng lặp, hàm gọi 33 để xuất 25 ra hàng hiện tại. Tham số 35 cho 33 là một chuỗi rỗng ( 37) 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 33, sử dụng chuỗi mà Python cung cấp 9Không đi vào quá nhiều chi tiết, cú pháp 39 yêu cầu 33 thực hiện các thao tác sau
Bây giờ tên đã được in ra hàng, hãy xem phần chính của 15 0Mã này thực hiện phép lặp hiện tại 26 và sử dụng toán tử modulo, so sánh nó với 17. Nếu kết quả bằng 23, 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 33 để 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 48 cho phép bạn chạy các mã khác nhau ở các khoảng thời gian cụ thể trong các vòng lặp của mình. Trong phần tiếp theo, bạn sẽ hiểu khái niệm này xa hơn một chút và xem xét phép lặp tuần hoànCách tạo vòng lặp tuần hoànLặ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 49 để vẽ hình 1Đ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 50 được đặt lại thành 23. Nếu bạn chạy mã, thì bạn sẽ nhận được một cái gì đó tương tự như thế nàyCác phần quan trọng của mã này được đánh dấu bên dưới 2Mỗi lần qua vòng lặp, 50 được cập nhật dựa trên kết quả của 53. Giá trị 50 mới này được sử dụng để tăng 55 với mỗi lần lặp lại. Khi 50 đạt tới 4, 53 sẽ bằng với 23 và 50 sẽ đặt lại thành 23Bạn có thể xem các bước lặp bên dưới để rõ hơn 3Khi 50 được đặt lại thành 23, thì 64 sẽ chuyển sang màu ngẫu nhiên mới như bên dưới 4Mã trong phần này sử dụng 65 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ị 50Loại bỏ các quảng cáoCách chuyển đổi đơn vịTrong phần này, bạn sẽ xem cách bạn có thể sử dụng toán tử modulo để chuyển đổi đơn vị. Các ví dụ sau lấy các đơn vị nhỏ hơn và chuyển đổi chúng thành các đơn vị lớn hơn mà không sử dụng số thập phân. Toán tử modulo được sử dụng để xác định bất kỳ phần còn lại nào có thể tồn tại khi đơn vị nhỏ hơn không chia hết cho đơn vị lớn hơn Trong ví dụ đầu tiên này, bạn sẽ chuyển đổi inch thành feet. Toán tử modulo được sử dụng để lấy các inch còn lại không chia đều thành các feet. Toán tử chia tầng ( 79) được sử dụng để lấy tổng số feet làm tròn xuống 5Đây là một ví dụ về chức năng được sử dụng >>> 6Như bạn có thể thấy từ kết quả, 68 trả về 65, là số inch còn lại không được chia đều cho feet. Kết quả của 70 là 65, là tổng số feet mà các inch được chia đềuBạn có thể làm điều này xa hơn một chút trong ví dụ tiếp theo này. 72 lấy một số nguyên, 73, đạ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 7Phá vỡ điều này, bạn có thể thấy rằng chức năng thực hiện như sau
Bạn có thể xem cách nó hoạt động dưới đây >>> 8Mặ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 có 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 61 để làm cho mã ngắn gọn hơn. Nếu bạn còn nhớ, 61 trả về một bộ dữ liệu chứa kết quả của phép chia sàn và modulo bằng cách sử dụng các tham số được cung cấpDưới đây, các toán tử chia tầng và modulo đã được thay thế bằng 61 9Như bạn có thể thấy, 84 trả về một bộ, được giải nén thành 85 và 86Nế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 >>> 0Bạ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 72 1Sử dụng 61, hàm dễ đọc hơn phiên bản trước và trả về kết quả tương tự>>> 2Việc sử dụng 61 không cần thiết cho mọi trường hợp, nhưng nó có ý nghĩa ở đây vì tính toán chuyển đổi đơn vị sử dụng cả phép chia sàn và moduloBây giờ bạn đã biết cách sử dụng toán tử modulo để chuyển đổi đơn vị, trong phần tiếp theo, bạn sẽ xem cách bạn có thể sử dụng toán tử modulo để kiểm tra các số nguyên tố Cách để Xác định xem một số có phải là số nguyên tố hay khôngTrong 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à 89 và chính nó. Một số ví dụ về số nguyên tố là 39, 22, 4, 69, 95, 96, 97, 98 và 99Đ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 3Mã này định nghĩa 00, lấy tham số 93 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 93 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, thì 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 >>> 4Đi sâu vào mã, bạn có thể thấy nó bắt đầu bằng cách kiểm tra xem 93 có nhỏ hơn 39 không. Số nguyên tố chỉ có thể lớn hơn hoặc bằng 39. Nếu 93 nhỏ hơn 39 thì hàm không cần tiếp tục. Nó sẽ 33 một tin nhắn và 09 5Nếu 93 lớn hơn 39, thì hàm sẽ kiểm tra xem 93 có phải là số nguyên tố không. Để kiểm tra điều này, hàm lặp lại trên tất cả các số giữa 39 và căn bậc hai của 93 để xem liệu có bất kỳ số nào chia đều cho 93. Nếu một trong các số chia hết thì đã tìm được thừa số và 93 không thể là số nguyên tốĐây là phần chính của chức năng 6Có 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, một danh sách 17 được tạo với các thừa số ban đầu, 18. 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 7Tiếp theo, bắt đầu với 39, mã tăng dần 50 cho đến khi đạt đến căn bậc hai của 93. Tại mỗi lần lặp, nó so sánh 93 với 50 để xem nó có chia hết không. Mã chỉ cần kiểm tra đến và bao gồm căn bậc hai của 93 vì nó sẽ không chứa bất kỳ thừa số nào ở trên này 8Thay vì cố gắng xác định căn bậc hai của 93, hàm sử dụng vòng lặp 26 để xem liệu 27. Miễn là 27, vòng lặp chưa đạt đến căn bậc hai của 93Bên trong vòng lặp 26, toán tử modulo kiểm tra xem 93 có chia hết cho 50 không 9Nếu 93 chia hết cho 50, thì 50 là thừa số của 93 và một bộ các thừa số được thêm vào danh sách 17Khi vòng lặp 26 hoàn tất, mã sẽ kiểm tra xem có tìm thấy yếu tố bổ sung nào không 0Nếu có nhiều hơn một bộ trong danh sách 17, thì 93 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 93 là số nguyên tốLoại bỏ các quảng cáoCách triển khai mật mãToán tử modulo Python có thể được sử dụng để tạo mật mã. Mật mã là một loại thuật toán để thực hiện mã hóa và giải mã trên đầu vào, thường là văn bản. Trong phần này, bạn sẽ xem xét hai loại mật mã, mật mã Caesar và mật mã Vigenère Mật mã CaesarMậ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à 4, thì 43 sẽ thay đổi năm chữ cái để trở thành 44, 45 sẽ trở thành 46, v.v. Dưới đây, bạn có thể thấy quy trình mã hóa cho văn bản 47 với độ dịch chuyển là 4Mật mã kết quả là 49Giả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 đó 50 là chỉ mục của ký tự trong bảng chữ cái 1Mậ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 2Mã này định nghĩa một hàm có tên là 51, có hai tham số bắt buộc và một tham số tùy chọn
54 đượ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 52 có phải là ký tự chữ cái trong bảng mã ASCII không 3Sau đó, hàm xác định ba biến để lưu trữ 58 ký tự ASCII, 59 ký tự ASCII và kết quả mã hóa hoặc giải mã 4Tiếp theo, nếu hàm đang được sử dụng để giải mã 52, thì hàm này sẽ nhân 53 với 41 để dịch chuyển ngược lại 5Cuối cùng, 51 lặp lại các ký tự riêng lẻ trong 52 và thực hiện các hành động sau cho từng ký tự 65
Sau khi vòng lặp hoàn thành việc lặp qua giá trị 52, giá trị 74 được trả về 6Đây là mã đầy đủ một lần nữa 2Bây giờ hãy chạy mã trong Python REPL bằng cách sử dụng văn bản 77 với độ dịch chuyển là 78>>> 8Kết quả được mã hóa là 79. 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>>> 9Mậ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èreMậ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 47 được mã hóa bằng từ khóa 81Đối với mỗi chữ cái của văn bản đầu vào, 47, một chữ cái từ từ khóa 81 đượ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 81, thì các chữ cái của từ khóa sẽ được lặp lại cho đến khi tất cả các chữ cái của văn bản đầu vào được mã hóaDưới đây là một triển khai của mật mã Vigenère. Như bạn sẽ thấy, toán tử modulo được sử dụng hai lần trong hàm 0Bạn có thể nhận thấy rằng chữ ký của 85 khá giống với 51 ở phần trước 1Sự khác biệt chính là, thay vì tham số 53, 85 lấy tham số 89, 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 90. Dựa trên triển khai này, 85 chỉ có thể chấp nhận văn bản đầu vào là chữ hoaGiống như 51, 85 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ó 2Trong đ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 3Ở đây, giá trị 94 được xác định dựa trên một chỉ mục được trả về từ 95. Chỉ mục này được sử dụng để chọn một chữ cái từ chuỗi 89, chẳng hạn như 97 từ 81Toá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 52 được mã hóa. Khi chỉ số 50, 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ó
Hãy xem các bước này trong đoạn mã dưới đây 4Bạ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 54 đượ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 26, bạn thấy cách sử dụng toán tử modulo thứ hai của hàm 5 11 đảm bảo rằng 26 của ký tự không vượt quá 13, 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ừ 59 và được thêm vào 15Đây là mã đầy đủ của mật mã Vigenère một lần nữa 0Bây giờ hãy tiếp tục và chạy nó trong Python REPL >>> 7Đẹp. Bây giờ bạn có một mật mã Vigenère đang hoạt động để mã hóa các chuỗi văn bản Loại bỏ các quảng cáoSử dụng nâng cao Toán tử Modulo trong PythonTrong 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 19. Bạn cũng sẽ xem cách bạn có thể thêm 1 vào các lớp tùy chỉnh của mình để chúng có thể được sử dụng với toán tử moduloSử dụng Toán tử Modulo của Python với a ≡ b (mod n) 19Trướ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ư 14 và 15 cũng như với 18. Bạn cũng có thể sử dụng toán tử modulo với từ mô-đun 23. Bạn sử dụng 19 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 chấm độngDưới đây là một số ví dụ về việc sử dụng số nguyên nguyên với 19 và toán tử modulo>>> 8Dưới đây là một số số dấu phẩy động được sử dụng với 19 và toán tử modulo>>> 9Tất cả các hoạt động modulo với ____13_______19 đề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ư 14 và 15, nhưng giống như 18, 19 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 14 và 15 và với 19>>> 0So với 18 thì 19 sẽ có cùng dấu, nhưng độ chính xác sẽ khác>>> 1Như bạn có thể thấy từ các ví dụ trên, làm việc với 19 và toán tử modulo cũng tương tự như làm việc với các kiểu số khác. Bạn chỉ cần lưu ý cách xác định dấu của kết quả khi làm việc với toán hạng âmTrong phần tiếp theo, bạn sẽ xem cách bạn có thể ghi đè toán tử modulo trong các lớp của mình để tùy chỉnh hành vi của nó Sử dụng toán tử Modulo Python với các lớp tùy chỉnhMô 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 đè 1 để bạn có thể sử dụng toán tử modulo với các lớp của riêng mìnhTrong ví dụ này, bạn sẽ làm việc với lớp 39. Lớp này sẽ theo dõi lượng thời gian học sinh đã học. Đây là lớp 39 ban đầu 2Lớp 39 được khởi tạo với tham số 25 và bắt đầu với một danh sách trống, 43, 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ó 44, lấy tham số 45 là danh sách các buổi học để thêm vào 43Bây giờ, nếu bạn còn nhớ từ phần trên, 47 đã sử dụng toán tử modulo Python để chuyển đổi 73 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 3Bạn có thể sử dụng chức năng này với lớp 39 để hiển thị tổng số giờ mà một 39 đã học. Kết hợp với lớp 39 ở trên, mã sẽ như thế này 4Nế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 >>> 5Đoạn mã trên in ra tổng số giờ 52 đã 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 43 để có được 73 trước khi gọi 55Đây là cách bạn có thể sửa đổi lớp 39 để đơn giản hóa mã 6Bằng cách ghi đè 1 và 58, bạn có thể sử dụng một thể hiện 39 với toán tử modulo. Tính toán 60 của 43 cũng được bao gồm trong lớp 39Với những sửa đổi này, bạn có thể sử dụng phiên bản 39 trực tiếp trong 55. Vì 73 không còn cần thiết nữa, bạn có thể xóa nó 7Đây là mã đầy đủ sau khi sửa đổi 8Bây giờ, gọi mã trong Python REPL, bạn có thể thấy nó ngắn gọn hơn nhiều >>> 9Bằng cách ghi đè 1, bạn cho phép các lớp tùy chỉnh của mình hoạt động giống các kiểu số tích hợp sẵn của Python hơnLoại bỏ các quảng cáoPhần kết luậnThoạ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
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ò về điện tử hoặc xây dựng ứng dụng web Django, bạn có thể thấy anh ấy đi bộ đường dài trên những ngọn núi ở Đài Loan hoặc học tiếng Trung. » Thông tin thêm về JasonMỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là Aldren Geir Arne Jim Joanna Gia-cốp Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia Nâng cao kỹ năng Python của bạn » Chuyên gia Kỹ năng Python trong thế giới thực Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia Nâng cao kỹ năng Python của bạn » Bạn nghĩ sao? Đánh giá bài viết này Tweet Chia sẻ Chia sẻ EmailBài học số 1 hoặc điều yêu thích mà bạn đã học được là gì? Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi Toán tử 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à cho kết quả là số 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.
Để tìm số dư ta dùng lệnh gì?Lấy phần còn lại bằng cách sử dụng toán tử % . Các biểu thức dùng trong chương trình tính thương và số dư. thương = số bị chia/số bị chia; . Chương trình sẽ ném ra một ArithmeticException. / bằng 0 khi chia cho 0.
Là mod giống như phần còn lại?Cả hai đều khá giống nhau . Sự khác biệt là REMAINDER sử dụng ROUND trong phép tính của nó và MOD sử dụng hàm FLOOR. TRÒN có thể đi lên hoặc đi xuống, nhưng SÀN luôn luôn đi xuống. Sự khác biệt chính là khi bạn sử dụng số âm. |