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


#1

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

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

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

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


#2

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


#3

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

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


#4

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


#5

السلام عليكم


#6

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

جرب التالي:

atm2.withdraw(300) 

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

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

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


#7

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


#8

عمل رائع يا أحمد… ما رأيك بإخراج هذا الجزء لدالة منفصلة مثلاً اسمها 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```

#9

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


#10

جميل جداً… ما رأيك أن تتخلص من المتغير 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:


#11

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


#12

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

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

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

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

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


#13

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

قد تم التعديل


#14

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


#15

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


#16

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


#17

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


#18

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


#19

عمل رائع يا أسماء :+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")

#20

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