إنشاء تمثيل عدد قابل للقراءة البشرية: دليل كامل
هل صادفت يومًا مواقف يكون فيها عرض الأرقام بشكل أكثر فهمًا أمرًا ضروريًا؟ ربما تحتاج إلى تقديم بيانات لجمهور غير معتاد على الأرقام الرقمية. في مثل هذه الحالات، يمكن أن يعزز تحويل الأعداد إلى تمثيلاتها القابلة للقراءة الإنسانية من وضوح المعلومات بشكل كبير. قد يبدو أن هذه المهمة بسيطة، لكنها تتطلب وظيفة مصممة بذكاء تمثل الأعداد بدقة ككلمات.
المشكلة
التحدي هنا هو إنشاء وظيفة تحول الأعداد الصحيحة إلى أشكال نصية وصفية. إليك بعض الأمثلة لما يجب أن تحققه هذه الوظيفة:
- يجب أن تعيد
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)) # "مليار واحد، وأربعمائة وستة وخمسون مليونًا، وثلاثمائة وستة وسبعون ألفًا، وخمسمائة واثنان وستون"
الخاتمة
إليك ما تحتاجه! إنشاء تمثيل لـ عدد قابل للقراءة البشرية
لا يعد مجرد تمرين فكري، بل أيضًا كأداة عملية في العديد من سيناريوهات البرمجة. من خلال اتباع النهج المنظم الموضح هنا، ستكون على طريق إجادة هذا التحدي البرمجي.
الآن، اغتنم بيئة البرمجة الخاصة بك وابدأ في تنفيذ هذه الوظيفة الممتعة والمفيدة اليوم!