• 0

كيف تتم المقارنة بين السلاسل النصية والأعداد الصحيحة في بايثون؟

أريد معرفة كيف تتم المقارنة بين  السلاسل النصية والأعداد الصحيحة في بايثون، لأنني قمت بالمقارنة وحصلت على نتائج غريبة وأعتقد أنها متناقضة، مثال على غرابة المقارنة:

print "100" < "2"      # True
print "5" > "9"        # False

print "100" < 2        # False
print 100 < "2"        # True

print 5 > "9"          # False
print "5" > 9          # True

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

شرح من التوثيق الرسمي للبايثون:


يتم ترتيب الكائنات من نوع مختلف (ما عدا الأرقام) حسب أسمائهم، وأما الكائنات من النوع نفسه والتي لا تدعم طريقة مقارنة صحيحة يتم ترتيبهم حسب العناوين.

لذلك فإنه عندما تقوم بالمقارنة بين سلسلتين نصيّتين أو عددين صحيحين فإنه يتم ترتيبهم بطريقة متوقعة وليست عشوائية (ترتيب لكسيكوجرافيك lexicographic للسلاسل النصية، وترتيب رقمي للأعداد الصحيحة).
وعندما تقوم بالمقارنة بين نوع رقمي ونوع غير رقمي، فإن النوع الرقمي يأتي أولا كما في المثال التالي:

>>> 5 < 'foo'
True
>>> 5 < (1, 2)
True
>>> 5 < {}
True
>>> 5 < [1, 2]
True

وعندما تقوم بالمقارنة بين نوعين غير رقميين، فإنه سيتم ترتيبهم حسب ترتيب الأبجدية لاسم النوع:

>>> [1, 2] > 'foo'   # 'list' < 'str'
False
>>> (1, 2) > 'foo'   # 'tuple' > 'str'
True

المصدر

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن