Computer >> Máy Tính >  >> Lập trình >> Python

Hexspeak bằng Python


Giả sử một số thập phân có thể được chuyển đổi thành biểu diễn Hexspeak bằng cách chuyển đổi nó thành một chuỗi thập lục phân viết hoa lúc đầu, sau đó thay thế tất cả các lần xuất hiện của chữ số 0 bằng chữ O và chữ số 1 với chữ I.

Loại biểu diễn này hợp lệ nếu và chỉ khi nó chỉ bao gồm các chữ cái trong tập hợp {"A", "B", "C", "D", "E", "F", "I", "O "}.

Vì vậy, chúng ta có một chuỗi num đại diện cho một số nguyên thập phân N, chúng ta phải tìm biểu diễn Hexspeak của N nếu nó là chính xác, nếu không sẽ trả về "ERROR". Vì vậy, nếu num =“257”, thì đầu ra sẽ là “IOI” vì 257 là 101 trong hệ thập lục phân.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • x:=định dạng hex của chữ số
  • ans:=một chuỗi trống
  • tạo một từ điển và đặt các số (10:'A', 11:'B', 12:'C', 13:'D', 14:'E', 15:'F', 1:'I', 0:'O')
  • cho mỗi ký tự i trong x -
    • nếu tôi ở d, thì ans:=ans + d [i], nếu không trả về "ERROR"
  • trả lại ans

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

class Solution(object):
   def convertToHex(self, n):
      res = []
      while n > 0:
         res.append(n % 16)
         n //= 16
      return res[::-1]
   def toHexspeak(self, num):
      x = self.convertToHex(int(num))
      ans = ""
      d = {10:"A", 11:"B", 12:"C", 13:"D", 14:"E", 15:"F",0:"O",1:"I"}
      for i in x:
         if i in d:
            ans += d[i]
         else:
            return "ERROR"
      return ans
ob1 = Solution()
print(ob1.toHexspeak("659724"))

Đầu vào

"659724"

Đầu ra

"AIIOC"