مشاركة حلول: مشروع الصراف الآلي على GitHub

مرحباً جميعاً

المهمة المطلوبة

بإمكانك الإطلاع على المهمة المطلوبة من هنا

كيفية كتابة الأكواد في المنتدى

2 Likes

السلام عليكم ورحمة الله

4 Likes

عمل رائع يا عادل :+1:

بإمكانك حل المشكلة مباشرة على الريبو :wink:

1 Like

@YaserAlnajjar تم التعديل شكرا أستاذنا

2 Likes

السلام عليكم

2 Likes

عمل رائع يا عادل, لكن الأرقام خدعتك هذه المرة :smile:

جرب التالي:

atm2.withdraw(300) 

وشاهد النتيجة, سيظهر لديك متبقي 300 دولار من الألف, والمفترض تكون 700

السبب أنك استعملت 500, وألف ناقص 500 = 500, لهذا الأرقام خدعتك.

السؤال الأهم: هل تحتاج لإرجاع result داخل الدالة في الكلاس ؟

1 Like

:smile: :smile: :smile: :smile:
سوف ألقي نظرة على الكود وأحاول تعديله، شكرا لمجهودك معنا

2 Likes

عمل رائع يا أحمد… ما رأيك بإخراج هذا الجزء لدالة منفصلة مثلاً اسمها give_money, لإتباع Single Responsibility Principle - SRP:

            self.withdrawals_list.append(request)
            self.balance -= request

            notes = [100, 50, 10, 5]
            for note in notes:
                while request >= note:
                    request -= note
                    print("give ", str(note))

            while request < 5 and request > 0:
                print("give " + str(request))
                request -= request
                break```
2 Likes

أستاذ @YaserAlnajjar الكريم
إذا لديك بعض الوقت للاطلاع على التعديل
أتمنى تكون مضبوطة هذه المرة :smile:

1 Like

جميل جداً… ما رأيك أن تتخلص من المتغير result لأننا لا نحتاج هنا ارجاع قيمة balance لأنها موجودة داخل الكلاس أساساً, ليصبح الكود هكذا:

    def withdraw(self, request):

        print("Current balance = "+ str(self.balance))
        result = self.balance

        if request > self.balance:
            print("Can't give you all this money !!")

        elif request < 0:
            print("More than zero plz!")

        else:
            self.withdrawals_list.append(request)
            self.balance -= request

            notes = [100, 50, 10, 5]
            for note in notes:
                while request >= note:
                    request -= note
                    print("give " + str(note))
            if request % 5 != 0:
                print('give ' + str(request) + ' pieces')
                request = 0
            print("new balance: "+str(self.balance))

الآن بقي أن تطبق مبدأ SRP, وتستخرج الجزء الخاص بالـ give_money إلى دالة منفصلة :wink:

2 Likes

لقد قمت بعمل مبدأ فصل كل مهمة بدالة خاصة بها
أتمنى أن يكون هذا هو المطلوب، شكرا أستاذ @YaserAlnajjar

2 Likes

أصبحت الأكواد نظيفة ورائعة :+1:

بالنسبة للدالة:

    def get_current_balance(self):
        print("Current balance = " + str(self.balance))

لاحظ أنها مجرد wrapper حول print, أي أن الأفضل أن تكتبها كما هي بدون دالة داخل withdraw, لأنها لا تتصل بقاعدة بيانات أو أي شيء, مجرد print :smile:

نفس الأمر بالنسبة ل get_new_balance

2 Likes

شكرا أستاذ @YaserAlnajjar الكريم

قد تم التعديل

2 Likes

لوحة فنية يا عادل :wink:

1 Like

بفضل توجيهاتك أستاذنا العزيز

2 Likes

اشكرك علي التوجيهات المفيدة , تم التعديل :slight_smile:

3 Likes

ممتاز جداً :+1: :+1:

2 Likes

https://github.com/asmaasalih/forumsworkshop.git

3 Likes

عمل رائع يا أسماء :+1:

بقي فقط اتباع مبدأ Don’t Repeat Yourself - DRY, كما هو موضح بالدرس, بدلاً من تكرار هذه الأسطر المتشابهه:

				if request >= 100:
					request -= 100
					print("give 100")

				elif request >= 50:
					request -= 50
					print("give 50")

				elif request >= 10:
					request -= 10
					print("give 10")

				else:
					request -= 5
					print("give 5")
2 Likes

تمام جزاك الله خيرا
ساقوم بتعديل الكود

2 Likes