การสร้างการแสดงผลจำนวนเต็มที่อ่านออกได้ของมนุษย์: คู่มือที่ครบถ้วน

เคยมีสถานการณ์ที่คุณต้องแสดงผลตัวเลขในรูปแบบที่เข้าใจง่ายหรือไม่? บางทีคุณอาจต้องนำเสนอข้อมูลต่อผู้ชมที่ไม่คุ้นเคยกับตัวเลข ในกรณีเช่นนี้ การแปลงจำนวนเต็มให้เป็น การแสดงผลที่อ่านออกได้ของมนุษย์ สามารถเพิ่มความชัดเจนได้อย่างมาก งานนี้อาจดูเหมือนง่าย แต่ต้องการฟังก์ชันที่ออกแบบมาอย่างชาญฉลาดเพื่อแสดงตัวเลขให้เป็นคำอย่างถูกต้อง

ปัญหา

ความท้าทายที่อยู่ในมือคือการสร้างฟังก์ชันที่แปลงตัวเลขทั้งหมดให้เป็นรูปแบบสตริงที่มีความหมาย นี่คือตัวอย่างบางประการที่ฟังก์ชันนี้ควรจะทำได้:

  • humanReadable(1) ควรคืนค่า “หนึ่ง”.
  • humanReadable(53) ควรคืนค่า “ห้าสิบสาม”.
  • humanReadable(723603) ควรคืนค่า “เจ็ดร้อยยี่สิบสามพันหกร้อยสาม”.
  • humanReadable(1456376562) ควรคืนค่า “หนึ่งพันสี่ร้อยห้าหมื่นเจ็ดร้อยหกสิบเจ็ดล้านห้าร้อยหกสิบสอง”.

คุณอาจสงสัยว่าทำไมฟังก์ชันดังกล่าวจึงจำเป็น อันที่จริง อัลกอริธึมประเภทนี้มีหลายการประยุกต์ใช้ในพัฒนาซอฟต์แวร์ในโลกจริง ตั้งแต่ส่วนต่อประสานผู้ใช้จนถึงการสร้างรายงาน

การเข้าถึงวิธีแก้ไข

ในการนำฟังก์ชัน humanReadable ไปใช้ พิจารณาที่จะแบ่งกระบวนการออกเป็นขั้นตอนที่จัดการได้ง่าย นี่คือวิธีการที่มีระเบียบในการจัดการกับปัญหานี้:

1. ทำความเข้าใจกับโครงสร้างของตัวเลข

ก่อนที่จะเขียนโค้ด สิ่งสำคัญคือการเข้าใจว่าตัวเลขประกอบขึ้นจากอะไร:

  • หน่วย: 0-19 มีชื่อเฉพาะ (เช่น หนึ่งถึงสิบเก้า)
  • สิบ: 20, 30, …, 90 มีคำเฉพาะ (เช่น ยี่สิบ, สามสิบ, เป็นต้น)
  • ร้อยและพัน: ตั้งแต่ 100 ขึ้นไป เราจะสร้างชื่อโดยใช้ ‘และ’ ตามต้องการ (เช่น หนึ่งร้อยและสาม)

2. การนำฟังก์ชันไปใช้

นี่คือโครงร่างพื้นฐานของวิธีที่คุณสามารถเขียนโค้ดฟังก์ชันนี้:

การนำไปใช้ทีละขั้นตอน

  • กรณีพื้นฐาน: จัดการกับเลข 0 ถึง 19 โดยตรง
  • สิบและมากกว่า: สร้างการแมพเพิ่มเติมสำหรับสิบและหน่วยที่มากกว่า
  • การแบ่งส่วนแบบเรียกซ้ำ: แยกตัวเลขที่ใหญ่กว่าออกเป็นส่วนที่จัดการได้ง่าย (เช่น พัน ล้าน)
def humanReadable(number):
    if 0 <= number < 20:
        return unique_names[number]
    elif 20 <= number < 100:
        return tens_names[number // 10] + ('' if number % 10 == 0 else '-' + unique_names[number % 10])
    elif 100 <= number < 1000:
        return unique_names[number // 100] + ' ร้อย' + ('' if number % 100 == 0 else ' และ ' + humanReadable(number % 100))
    # ดำเนินการต่อสำหรับพันและล้าน

3. ตัวอย่างการนำไปใช้

นี่คือโครงสร้างทั้งหมดที่จะแสดงให้คุณเห็นจุดเริ่มต้นที่แข็งแกร่ง:

unique_names = ["ศูนย์", "หนึ่ง", "สอง", "สาม", "สี่", "ห้า", "หก", "เจ็ด", "แปด", "เก้า", "สิบ",
                "สิบเอ็ด", "สิบสอง", "สิบสาม", "สิบสี่", "สิบห้า", "สิบหก", "สิบเจ็ด", "สิบแปด", "สิบเก้า"]
tens_names = ["", "", "ยี่สิบ", "สามสิบ", "สี่สิบ", "ห้าสิบ", "หกสิบ", "เจ็ดสิบ", "แปดสิบ", "เก้าสิบ"]

def humanReadable(number):
    if number < 20:
        return unique_names[number]
    elif number < 100:
        return tens_names[number // 10] + ('' if number % 10 == 0 else '-' + unique_names[number % 10])
    # เพิ่มกรณีอื่น ๆ สำหรับร้อย พัน ล้าน...

4. การทดสอบฟังก์ชันของคุณ

ตรวจสอบให้แน่ใจว่าคุณได้รันกรณีทดสอบต่าง ๆ เพื่อให้แน่ใจว่าฟังก์ชันของคุณจัดการกับจำนวนที่กำหนดทั้งหมดได้อย่างถูกต้อง:

print(humanReadable(1))          # "หนึ่ง"
print(humanReadable(53))         # "ห้าสิบสาม"
print(humanReadable(723603))     # "เจ็ดร้อยยี่สิบสามพันหกร้อยสาม"
print(humanReadable(1456376562)) # "หนึ่งพันสี่ร้อยห้าหมื่นเจ็ดร้อยหกสิบเจ็ดล้านห้าร้อยหกสิบสอง"

สรุป

นี่คือสิ่งที่คุณต้องรู้! การสร้างการแสดงผล ที่อ่านออกได้ของมนุษย์ สำหรับจำนวนเต็มนั้นไม่เพียงแต่เป็นการทดสอบทางปัญญา แต่ยังเป็นเครื่องมือที่มีประโยชน์ในหลายกรณีการเขียนโปรแกรม โดยการทำตามวิธีการที่มีโครงสร้างที่กล่าวถึงที่นี่ คุณจะเข้าสู่วิธีการจัดการกับความท้าทายในการเขียนโค้ดนี้ได้อย่างดี

ตอนนี้ เตรียมสภาพแวดล้อมการเขียนโค้ดของคุณและเริ่มนำฟังก์ชันที่สนุกสนานและมีประโยชน์นี้ไปใช้วันนี้!