اذهب إلى المحتوى

السؤال

نشر

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

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

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

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

Recommended Posts

  • 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

المصدر

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...