Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

จำนวนเต็มเป็นคำภาษาอังกฤษใน Python


สมมติว่าเรามีตัวเลข ตัวเลขสามารถเป็นอะไรก็ได้ระหว่าง 0 ถึง 231 – 1 เราต้องแปลงตัวเลขเป็นคำ ดังนั้นถ้าตัวเลขเช่น 512 ผลที่ได้จะเป็นห้าร้อยสิบสอง

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • กำหนดรายการบางอย่างเช่น less_than_20 ซึ่งจะเก็บคำทั้งหมดตั้งแต่หนึ่งถึงสิบเก้า

  • อาร์เรย์อื่นเช่น หลักสิบ ถือหลักสิบ ยี่สิบ สามสิบ และต่อไปเรื่อยๆ จนถึงเก้าสิบ

  • อีกอาร์เรย์สำหรับหลักพัน ถือหลักพัน ล้าน และพันล้าน

  • กำหนดหนึ่งฟังก์ชันที่เรียกว่า helper() ซึ่งจะใช้เวลา n

  • ถ้า n เป็น 0 ให้คืนค่าสตริงว่าง

  • มิฉะนั้นเมื่อ n <20 ให้คืนค่า less_than_20[n] + ช่องว่าง

  • มิฉะนั้นเมื่อ n <100 ให้คืนค่า tens[n/10] + ช่องว่าง + helper(n mod 10)

  • มิฉะนั้นให้คืนค่า less_than_20[n/100] + “Hundred” + helper(n mod 100)

  • จากวิธีหลัก ให้ทำดังนี้

  • ถ้า num เป็น 0 ให้คืนค่า "Zero"

  • ตอบ :=สตริงว่าง ผม :=0

  • ในขณะที่ num> 0

    • ถ้า num mod 1000 ไม่ใช่ 0 แล้ว

      • ans :=helper(num mod 1000) + พัน[i] + ช่องว่าง + ans

      • num :=num / 1000

  • กลับมาอีกครั้ง

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

class Solution(object):
   less_than_20 = ["", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen",
"Nineteen"]
   tens = ["","Ten", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"]
   thousands = ["", "Thousand", "Million", "Billion"]
   def numberToWords(self, num):
      if num == 0:
         return "Zero"
      ans = ""
      i = 0
      while num > 0:
         if num % 1000 != 0:
            ans = self.helper(num % 1000) + Solution.thousands[i] + " " + ans
         i += 1
         num //= 1000
      return ans.strip()
   def helper(self, n):
      if n == 0:
         return ""
      elif n < 20:
         return Solution.less_than_20[n] + " "
      elif n < 100:
         return Solution.tens[n//10] + " " + self.helper(n % 10)
      else:
         return Solution.less_than_20[n // 100] + " Hundred " + self.helper(n % 100)

ob = Solution()
print(ob.numberToWords(512))
print(ob.numberToWords(7835271))

อินพุต

512
7835271

ผลลัพธ์

Five Hundred Twelve
Seven Million Eight Hundred Thirty Five Thousand Two Hundred Seventy One