قبل فترة طرحت تحدي إنشاء وظيفة تتأكدون أن الرقم العشري طبعا هناك أكثر من طريقة لحل هذا التحدي ولكن سأشارك الحل الذي معي :
def isfloat ( data ) :
pass
if "." in data :
if data . count ( "." ) == 1 :
pass
return True
else :
return False
else :
return False
var = input ( " Enter a number : " )
if isfloat ( var ) :
print ( " This is a float " )
else
:
print ( " This is not a float " )
شرح الكود :
في السطر الأول تعريف الدالة وأعطايناها قيمة data
وذلك للتأكد من الرقم طبعا الرقم العشري الصحيح لا بد أن يحتوي علي فاصلة وهذا موجود في أول if الآن هناك نقطة كم تكررت مرة ؟؟ هنا يأتي دور ثاني جملة if بس ممكن تلاحظوا
count هذي ميثود مفيدة وجميلة
طريقة شغلها كذا تقلك ذحين تبغى أعد لك طيب أنا من وين باعد فأقلها العناصر اللي تعديها موجودة في data تقول تمام أعد لك إيش إيش اللي باحسب مرات تكراره ؟؟؟
فبين القوسين أكتب نقطة ممكن الكود السابق يصير كذا
def isfloat ( data ) :
return True if data . count ( "." ) == 1 else False
if isfloat ( input ( "Enter a float: " ) ) :
print ( True )
else :
print ( False )
أنا كذا صرت أقله رجع لي قيمة True إذا كان عدد النقاط واحد بس غير كذا رجع لي قيمة خطأ
وكذا تم حل التحدي تقدر تشيل الوظيفة هذه لمساعدتك للتحقق من البيانات والأفضل أنك تكتبها بيدك …
طبعاً يجب التنويه أنك لو كتبت مسافات بين الرقم العشري زي كذا 6 . 6 6 بيمشي لكن لو حولته فعلا بيحصل خطأ اللي معاه حل لهذه ال…use case هذه يكتبه وشكرا
التحدي الذي طرحته حول التحقق من الرقم العشري باستخدام Python هو خطوة جيدة لفهم كيفية التعامل مع النصوص والتحقق من البيانات. ومع ذلك، هناك بعض الأمور التي يمكن تحسينها أو إضافتها لجعل الحل أكثر قوة وفعالية.
تحسين الكود:
إزالة المسافات البيضاء: يمكنك إزالة أي مسافات بين الأرقام والنقطة العشرية للتأكد من أن المدخل صالح.
التحقق من أن المدخل هو رقم بالفعل: قد ترغب في التحقق من أن المدخل يمكن تحويله بالفعل إلى عدد عشري (float) بدون حدوث خطأ.
الكود المحسن:
def isfloat(data):
# إزالة المسافات البيضاء
data = data.replace(" ", "")
# التحقق من وجود نقطة واحدة فقط
if data.count(".") == 1:
# محاولة تحويل المدخل إلى float
try:
float(data)
return True
except ValueError:
return False
else:
return False
var = input("Enter a number: ")
if isfloat(var):
print("This is a float")
else:
print("This is not a float")
شرح الكود المحسن:
إزالة المسافات: باستخدام replace(" ", "")، يتم إزالة أي مسافات بيضاء من المدخل، مما يسمح لك بالتعامل مع المدخلات التي تحتوي على مسافات.
التحقق من النقطة: إذا كان المدخل يحتوي على نقطة واحدة فقط، ننتقل للتحقق من إمكانية تحويله إلى float.
المحاولة للتحويل: نستخدم try وexcept للتحقق مما إذا كان المدخل يمكن تحويله إلى عدد عشري بدون حدوث خطأ. إذا كان يمكن تحويله، نعيد True، وإلا نعيد False.
التعامل مع حالات خاصة:
إذا كانت هناك حالات خاصة مثل الأرقام العشرية السالبة أو القيم العلمية (مثل 1e-3)، يمكنك تعديل الكود للتعامل مع هذه الحالات، لكن الحل أعلاه يغطي الأساسيات بشكل جيد.
تحدي إضافي:
يمكنك محاولة تحسين الكود أكثر ليقوم بالتعرف على الأنواع الأخرى من المدخلات العشرية (مثل الأرقام السالبة) أو حتى التعامل مع المدخلات غير الرقمية بطريقة مختلفة.