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

السؤال

نشر

لدي دالة بسيطة تقبل عدد غير محدد من المدخلات الرقمية، كالتالي:

def func(*args):
    # print(len(args), max(args), min(args))
    return len(args) or max(args)-min(args)

print(func(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))		# 10

لماذا تم اعادة الرقم 10 هنا؟ أليس من المفترض أن يتم إعادة قيمة منطقية True/False

ونفس الأمر إن قمت بتغيير or إلى and في الدالة كالتالي:

def func(*args):
    # print(len(args), max(args), min(args))
    return len(args) and max(args)-min(args)

print(func(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))		# 9

 

Recommended Posts

  • 2
نشر

سنقوم بشرح سلوك اثنين من العوامل المنطقية and و or. وفقاً للتوثيق الرسمي لبايثون

العامل المنطقي and سيقوم بإرجاع القيمة الخاطئة الأولى إذا وُجدت ، وإلا سيقوم بإرجاع القيمة الآخيرة في التعبير expression

العامل المنطقي or سيقوم بإرجاع القيمة الصائبة الأولى إذا وُجدت ، وإلا سيقوم بإرجاع القيمة الآخيرة في التعبير expression

العامل الوحيد الذي يقوم بإرجاع قيمة منطقية بغض النظر عن قيم معاملاته هو العامل المنطقي not

  • 1
نشر
  • a or b: يتم إرجاع a إذا كان a يحمل قيمة صواب (True) و إلا سيقوم بإرجاع b و هذا ما يُفسر المثال الأول لك حيث تم إرجاع قيمة len(args)
  • a and b يتم إرجاع b إذا كان a يحمل قيمة صواب (True) و إلا سيقوم بإرجاع a و هذا ما يُفسر المثال الثاني لك حيث تم إرجاع قيمة max(args)-min(args)
  • 1
نشر

كما تم الشرح في التعليقات السابقة فإنه المعاملان or و and لا يقوما بإرجاع القيمة ل true أو false إنما يتم إرجاع القيمة من ال expression التي يجب تنفيذها كما تم الشرح بالأعلى وذلك يكون مفيداً في حالات مثل إرجاع قيمة إفتراضية 

ولكن في حالة أنك تريد تنفيذ المطلوب من برنامجك يمكنك استخدام ()bool كالتالي

return bool(len(args) and max(args)-min(args))

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...