Python chuyển đổi int thành cơ sở 3

Giả sử bạn muốn chuyển đổi một số nguyên thành một chuỗi trong một số cơ sở giữa nhị phân và thập lục phân. Ví dụ: chuyển đổi số nguyên 10 thành biểu diễn chuỗi của nó ở dạng thập phân là "10" hoặc thành biểu diễn chuỗi ở dạng nhị phân là "1010". Mặc dù có nhiều thuật toán để giải quyết vấn đề này, bao gồm cả thuật toán được thảo luận trong phần ngăn xếp, nhưng công thức đệ quy của vấn đề rất tao nhã

Hãy xem một ví dụ cụ thể sử dụng cơ số 10 và số 769. Giả sử chúng ta có một dãy ký tự tương ứng với 10 chữ số đầu tiên, như convString = "0123456789". Thật dễ dàng để chuyển đổi một số nhỏ hơn 10 thành chuỗi tương đương của nó bằng cách tra cứu nó trong chuỗi. Ví dụ: nếu số là 9, thì chuỗi là convString[9] hoặc "9". Nếu chúng ta có thể sắp xếp để chia số 769 thành ba số có một chữ số là 7, 6 và 9, thì việc chuyển đổi nó thành một chuỗi rất đơn giản. Một số nhỏ hơn 10 nghe có vẻ là một trường hợp cơ sở tốt

Biết cơ sở của chúng tôi là gì gợi ý rằng thuật toán tổng thể sẽ bao gồm ba thành phần

  1. Rút gọn số ban đầu thành dãy số có một chữ số

  2. Chuyển đổi số có một chữ số thành chuỗi bằng tra cứu

  3. Nối các chuỗi một chữ số lại với nhau để tạo thành kết quả cuối cùng

Bước tiếp theo là tìm ra cách thay đổi trạng thái và tiến tới trường hợp cơ bản. Vì chúng ta đang làm việc với một số nguyên, hãy xem xét những phép toán nào có thể làm giảm một số. Các ứng cử viên có khả năng nhất là chia và trừ. Mặc dù phép trừ có thể hiệu quả, nhưng không rõ chúng ta nên trừ cái gì. Phép chia số nguyên có dư cho ta hướng đi rõ ràng. Hãy xem điều gì sẽ xảy ra nếu chúng ta chia một số cho cơ số mà chúng ta đang cố chuyển đổi thành

Dùng phép chia số nguyên chia 769 cho 10 ta được 76 dư 9. Điều này mang lại cho chúng tôi hai kết quả tốt. Đầu tiên, phần còn lại là một số nhỏ hơn cơ sở của chúng tôi có thể được chuyển đổi thành một chuỗi ngay lập tức bằng cách tra cứu. Thứ hai, chúng tôi nhận được một số nhỏ hơn số ban đầu của chúng tôi và đưa chúng tôi đến trường hợp cơ sở có một số nhỏ hơn cơ sở của chúng tôi. Bây giờ công việc của chúng ta là chuyển 76 về dạng biểu diễn chuỗi của nó. Một lần nữa, chúng ta sẽ sử dụng phép chia số nguyên cộng với phần dư để có kết quả lần lượt là 7 và 6. Cuối cùng, chúng tôi đã giảm vấn đề thành chuyển đổi 7, điều mà chúng tôi có thể thực hiện dễ dàng vì nó thỏa mãn điều kiện trường hợp cơ sở của \[n < base\], trong đó \[base = 10\]. Chuỗi thao tác chúng ta vừa thực hiện được minh họa trong hình 3. Lưu ý rằng các số chúng ta muốn ghi nhớ nằm trong các hộp còn lại dọc theo bên phải của sơ đồ

Hình 3. Chuyển đổi một số nguyên thành một chuỗi trong cơ sở 10

ActiveCode 1 hiển thị mã Python thực hiện thuật toán được nêu ở trên cho bất kỳ cơ sở nào từ 2 đến 16

Lưu ý rằng trong dòng 3, chúng tôi kiểm tra trường hợp cơ sở trong đó n nhỏ hơn cơ sở mà chúng tôi đang chuyển đổi thành. Khi chúng tôi phát hiện trường hợp cơ sở, chúng tôi ngừng đệ quy và chỉ cần trả về chuỗi từ chuỗi convertString. Ở dòng 6, chúng ta thỏa mãn cả luật thứ hai và luật thứ ba – bằng cách thực hiện lời gọi đệ quy và bằng cách giảm kích thước bài toán – sử dụng phép chia

Hãy theo dõi thuật toán một lần nữa;

hinh 4. Chuyển đổi Số 10 thành Biểu diễn Chuỗi Cơ sở 2 của nó

Hình 4 cho thấy rằng chúng tôi nhận được kết quả mà chúng tôi đang tìm kiếm, nhưng có vẻ như các chữ số bị sai thứ tự. Thuật toán hoạt động chính xác bởi vì chúng tôi thực hiện cuộc gọi đệ quy đầu tiên trên dòng 6, sau đó chúng tôi thêm biểu diễn chuỗi của phần còn lại. Nếu chúng tôi đảo ngược việc trả về tra cứu convertString và trả về lệnh gọi "10"0, thì chuỗi kết quả sẽ bị đảo ngược. Nhưng bằng cách trì hoãn thao tác nối cho đến sau khi lệnh gọi đệ quy quay lại, chúng tôi nhận được kết quả theo đúng thứ tự. Điều này sẽ nhắc bạn về cuộc thảo luận của chúng ta về ngăn xếp trong chương trước

Tự kiểm tra

Viết hàm nhận một chuỗi làm tham số và trả về True nếu chuỗi là một palindrome, ngược lại là False. Hãy nhớ rằng một chuỗi là một palindrome nếu nó được đánh vần giống nhau cả về phía trước và phía sau. Ví dụ. radar là một palindrome. đối với điểm thưởng, palindromes cũng có thể là cụm từ, nhưng bạn cần xóa dấu cách và dấu chấm câu trước khi kiểm tra. Ví dụ. thưa bà, tôi là adam là một palindrome. Palindromes vui nhộn khác bao gồm

Trong hướng dẫn lập trình python này, chúng ta sẽ tìm hiểu cách chuyển đổi số thập phân thành số bậc ba

Hệ thống số thập phân sử dụng 10 làm cơ sở và nó có 10 chữ số khác nhau để biểu thị một số. 0, 1, 2, 3, 4, 5, 6, 7, 8 và 9. Chúng tôi sử dụng chín chữ số này để biểu thị bất kỳ số nào trong hệ thống số thập phân

Số ternary là cơ sở 3 số. Những con số này có ba là cơ sở. Ba chữ số khác nhau được sử dụng để biểu thị một số trong hệ thống Ternary. 0,1 và 2. Tất cả các số được biểu thị bằng cách chỉ sử dụng ba chữ số này

Chúng ta có thể chuyển đổi bất kỳ số thập phân nào sang số tương đương bậc ba của nó. Ví dụ,

Ternary representation of decimal 0 is 0.
Ternary representation of decimal 1 is 1.
Ternary representation of decimal 2 is 2.
Ternary representation of decimal 3 is 10.
Ternary representation of decimal 4 is 11.
Ternary representation of decimal 5 is 12.
Ternary representation of decimal 6 is 20.
Ternary representation of decimal 7 is 21.
Ternary representation of decimal 8 is 22.
Ternary representation of decimal 9 is 100.
Ternary representation of decimal 10 is 101 etc.

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách chuyển đổi một số thập phân thành biểu diễn bậc ba của nó theo chương trình bằng cách sử dụng python

Trước khi bắt đầu viết chương trình, hãy cố gắng hiểu cách hoạt động của chuyển đổi

  • Giả sử chúng ta muốn chuyển đổi 21[thập phân] thành ternary
  • Chia 21 cho 3, dư 0, thương là 7
  • Chia 7 cho 3 dư 1 thương 2
  • Chia 2 cho 3, dư 2, thương bằng 0

Bây giờ, nối tất cả các phần còn lại 2-1-0, thế là xong. 210 là chuyển đổi. Vì vậy, tiếp tục chia số cho 3 cho đến khi thương số là 0 và nối tất cả các phần còn lại theo thứ tự ngược lại. Dễ dàng, phải không?

Sử dụng các bước được hiển thị ở trên, chúng ta có thể dễ dàng triển khai thuật toán bằng bất kỳ ngôn ngữ lập trình nào. Hãy xem chương trình python để chuyển đổi thập phân sang ternary trong python

[Chương trình ví dụ dưới đây có sẵn tại đây trên Github]

Chương trình Python để chuyển đổi một số thập phân thành ternary

Các số nhận xét trong chương trình trên biểu thị số bước bên dưới

  1. Đầu tiên, yêu cầu người dùng nhập một số. Đọc số và lưu vào biến số
  2. phương thức findternary_ là một phương thức đệ quy được sử dụng để tìm ra giá trị ternary theo cách đệ quy
  3. Trước hết, nó sẽ tìm thương và số dư của một số đã cho
  4. Nếu thương số là 0, nó sẽ trả về một chuỗi rỗng. Mặt khác, nó sẽ gọi chính nó theo cách đệ quy bằng cách chuyển thương số làm đối số và nối thêm phần còn lại vào nó. Về cơ bản, nó đang làm điều tương tự mà chúng ta đã thấy trong ví dụ trên

Trong chương trình này, chúng tôi đang yêu cầu người dùng nhập giá trị thập phân và chúng tôi đang tính toán biểu diễn bậc ba cho giá trị đó theo cách đệ quy. Quá trình đệ quy rất hữu ích nếu chúng ta cần thực hiện liên tục một thao tác tương tự. Ở đây, chúng tôi liên tục chia số cho 3 cho đến khi thương trở thành 0. Đừng bao giờ quên thêm một điều kiện để kiểm tra sự kết thúc trong một hàm đệ quy. Hoặc nếu không thì nó sẽ tiếp tục chạy trong thời gian vô hạn

Sự kết luận

Trong hướng dẫn này, chúng ta đã tìm hiểu về hệ thống số bậc ba và cách chuyển đổi một số thập phân thành bậc ba bằng python. Xem qua ví dụ trên và thử chạy chương trình bằng python 3. Nếu bạn có bất kỳ câu hỏi nào, hãy để lại một bình luận bên dưới

Chủ Đề