• 0

مشكلة أثناء إنشاء Decorators لتنفيذ دالة عند تحقق شرط معين؟

هذا التمرين من دورة Python التي تقدمها اكاديمية حسوب في درس Decorators 

لقد حاولت لعدة ساعات ولكني للأسف الشديد لم اصل الى حل !

التمرين {

إنشاء مزخرف لتنفيذ دالة عند تحقق شرط معين فقط

يُمكنك أن تستعمل دالة تسجيل الدخول التي قُمنا بإنشائها كمُزخرف للدوال التي تحتاج لأن يكون المُستخدم مُسجلا دخوله. مثلا لنقل بأنّنا نريد أن نعرض على المُستخدم عدة خيارات بعضها يحتاج إلى تسجيل دخول المُستخدم وبعضها لا. 

الخيارات كالتّالي: 

تسجيل مُستخدم جديد (تسجيل الدخول غير مطلوب) 

طباعة جملة عشر مرات ( تسجيل الدخول غير مطلوب) 

الحصول على الوقت الحالي ( تسجيل الدخول غير مطلوب) 

طباعة اسم المُستخدم (تسجيل الدخول مطلوب) 

رؤية معلومات الحساب (تسجيل الدخول مطلوب) 

تعديل كلمة المرور (تسجيل الدخول مطلوب)

مبدأ عمل البرنامج سيكون كالتالي: 

إنشاء الدوال المسؤولة عن الخيارات 

عرض الخيارات على المُستخدم 

زخرفة الدوال التي تطلب تسجيل المُستخدم بمُزخرف تسجيل الدخول 

المُزخرف سيتحقق من أنّ المُستخدم قد سجل دخوله، إذا كان الأمر كذلك، تنفّذ الدالة وإذا لم يتحقق الشرط فلا تنفذ.

لنقل بأنّ اسم مُزخرف التحقق من تسجيل الدخول هو is_user_logged_in، ستكون الدوال التي تطلب تسجيل الدخول مُزَخْرَفَةً كالتالي:

@if_user_logged_in def account_info(): print 'Username:', username, 'Password:', password

}

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


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

لو تزودنا برابط إلى هذا التمرين يكون أفضل.

1 شخص أعجب بهذا

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


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

أخي الكريم لقد اطلعت على هذا الدرس، الفقرة (التمرين) التي تشير إليها مرتبطة بشيفرة برمجيّة موجودة في درس آخر. ولكن من الممكن أنّه قد حدث التباس لديك لأنّ الكاتب لم يذكر في أيّ درس توجد دالة تسجيل الدخول. على العموم يمكنك اعتبار الدالة التالية التي اسمها login كدالة تسجيل دخول:

def login():
	print 'Hello User, this is a basic sign up/login Program'
	username = raw_input('Enter your username please: ')
	password = raw_input('Enter the your password please: ')
	password_verification = raw_input('Verify password: ')
	if password == password_verification:
		print 'You have Successfully Signed up! \n'
		username_sign_in = raw_input('Enter your username please: ')
		password_sign_in = raw_input('Enter your password please: ')
		if username_sign_in == username and password_sign_in == password:
			is_logged_in = true
		else:
			is_logged_in = false
			print 'username or password do not match! Please try again!'
	else:
		print 'The password and the password verification do not match! Please try again'

الدالة السابقة حصلت عليها من هذا الدرس وقد أجريت عليها تعديلًا بسيطًا. أمّا الدالة المُزَخرفة if_user_logged_in فيجب أن  تختبر ضمنها قيمة المتغير is_logged_in فإذا كان true فهذا يعني أنّ المستخدم قد تمّ تسجيل دخوله، أمّا إذا كان false فيعني ذلك أنّ المستخدم لم يسجّل دخوله بعد لذلك يجب أن تستدعي عندئذٍ الدالة login السابقة.

من الواضح أنّك ستحتاج إلى تعريف المتغيّر is_logged_in أولًا خارج أي دالة.

ملاحظة: أنصحك بطرح هكذا اسئلة ضمن التعليقات على الدرس نفسه، لكي يستطيع الكاتب التواصل معك مباشرةً.

 

1 شخص أعجب بهذا

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


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

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

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

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


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

تسجيل الدخول

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


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