การสร้างการแสดงผลจำนวนเต็มที่อ่านออกได้ของมนุษย์: คู่มือที่ครบถ้วน
เคยมีสถานการณ์ที่คุณต้องแสดงผลตัวเลขในรูปแบบที่เข้าใจง่ายหรือไม่? บางทีคุณอาจต้องนำเสนอข้อมูลต่อผู้ชมที่ไม่คุ้นเคยกับตัวเลข ในกรณีเช่นนี้ การแปลงจำนวนเต็มให้เป็น การแสดงผลที่อ่านออกได้ของมนุษย์ สามารถเพิ่มความชัดเจนได้อย่างมาก งานนี้อาจดูเหมือนง่าย แต่ต้องการฟังก์ชันที่ออกแบบมาอย่างชาญฉลาดเพื่อแสดงตัวเลขให้เป็นคำอย่างถูกต้อง
ปัญหา
ความท้าทายที่อยู่ในมือคือการสร้างฟังก์ชันที่แปลงตัวเลขทั้งหมดให้เป็นรูปแบบสตริงที่มีความหมาย นี่คือตัวอย่างบางประการที่ฟังก์ชันนี้ควรจะทำได้:
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)) # "หนึ่งพันสี่ร้อยห้าหมื่นเจ็ดร้อยหกสิบเจ็ดล้านห้าร้อยหกสิบสอง"
สรุป
นี่คือสิ่งที่คุณต้องรู้! การสร้างการแสดงผล ที่อ่านออกได้ของมนุษย์
สำหรับจำนวนเต็มนั้นไม่เพียงแต่เป็นการทดสอบทางปัญญา แต่ยังเป็นเครื่องมือที่มีประโยชน์ในหลายกรณีการเขียนโปรแกรม โดยการทำตามวิธีการที่มีโครงสร้างที่กล่าวถึงที่นี่ คุณจะเข้าสู่วิธีการจัดการกับความท้าทายในการเขียนโค้ดนี้ได้อย่างดี
ตอนนี้ เตรียมสภาพแวดล้อมการเขียนโค้ดของคุณและเริ่มนำฟังก์ชันที่สนุกสนานและมีประโยชน์นี้ไปใช้วันนี้!