البرمجة

تحسين شيفرة Python لضمان ضبط وأداء أفضل

في البداية، يجدر بك التعامل مع الخطأ الحالي في الشيفرة، حيث يتم استخدام نفس المتغير no3 لتحويل كل من no1 و no2 إلى أنواع البيانات الصحيحة، وهذا يؤدي إلى فقدان قيمة no1 واحتوائها على القيمة المحولة لـ no2، وعلى هذا يصبح الرقم الأول no1 يحمل نفس قيمة no2. لحل هذه المشكلة، يجب تعيين القيمة المحولة إلى no2 إلى متغير آخر، سنقوم بتسميته مثلًا no4. يصبح الشيفرة كالتالي:

python
def int_mult(no1, no2): try: no3 = int(no1) no4 = int(no2) # تعيين القيمة المحولة إلى no2 إلى متغير آخر except ValueError: return print("Error: Invalid Argument Type") no1 = int(round(no1)) no2 = int(round(no2)) return no1 * no2 print(int_mult(4.49, "apple"))

تم حل المشكلة الأولى، ولكن هناك نقاط أخرى يمكن تحسينها في الشيفرة. على سبيل المثال، يمكنك إزالة جزء الاستثناء واستخدام التحقق من نوع البيانات بشكل أفضل باستخدام isinstance. كما يمكن تحسين الشيفرة لتكون أكثر قوة وإيلاء اهتمام أكبر للتفاصيل.

python
def int_mult(no1, no2): if not (isinstance(no1, (int, float)) and isinstance(no2, (int, float))): return print("Error: Invalid Argument Type") no1 = int(round(no1)) no2 = int(round(no2)) return no1 * no2 print(int_mult(4.49, "apple"))

هذه النسخة من الشيفرة تقوم بفحص نوع البيانات باستخدام isinstance، وإذا لم يكن نوع البيانات صالحًا (عدا الأنواع int و float)، سيتم طباعة رسالة خطأ.

المزيد من المعلومات

بالتأكيد، دعنا نتناول بعض التحسينات الإضافية في الشيفرة لجعلها أكثر دقة وإتقانًا. فيما يلي إصدار محسن للشيفرة:

python
def multiply_rounded_values(value1, value2): """ This function multiplies two values after rounding them to the nearest integer. :param value1: The first value (int or float). :param value2: The second value (int or float). :return: The product of the rounded values. """ if not (isinstance(value1, (int, float)) and isinstance(value2, (int, float))): raise ValueError("Error: Invalid Argument Type. Both values must be integers or floats.") rounded_value1 = round(value1) rounded_value2 = round(value2) return rounded_value1 * rounded_value2 try: result = multiply_rounded_values(4.49, "apple") print(f"The result is: {result}") except ValueError as e: print(e)

تم تحسين الشيفرة لاستخدام اسماء متغيرات أكثر وضوحًا مثل value1 و value2 بدلاً من no1 و no2. كما تم إضافة تعليقات توضيحية للدالة لجعل الشيفرة أكثر قراءةً وفهمًا. أيضًا، تم استخدام raise ValueError بدلاً من print لرمي استثناء عندما يكون نوع البيانات غير صالح، وهذا يجعل من السهل التحكم في التدفق عند وجود خطأ.

إضافةً إلى ذلك، يمكنك استخدام الدالة format لطباعة النتيجة بشكل أكثر أناقة، مما يضيف للكود جوًا إضافيًا من الاحترافية.

زر الذهاب إلى الأعلى