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

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

Telyane

السؤال

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

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

التمرين {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

}

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 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 أولًا خارج أي دالة.

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

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...