مشاركة حلول: تجنب النسخ واللصق باسخدام الدوال


#21

شكرا أستاذنا الغالي :heart:


#22
def withdraw(balance, request):
    if balance<request:
        print("لا يوجد رصيد كافِ للتسديد")
        return balance
    elif request<=0:
        print("يرجى ادخال قيمة ")
        return balance
    else:
        result=balance-request
        while request >= 100:
            request =request-100
            print("give 100")

        while request<100 and request>=50:
            request=request-50
            print ("give 50")

        while request<50 and request>=10:
            request=request -10
            print("give 10")

        while request<10 and request>=5:
            request=request-5
            print("give 5")
        if request!=0:
            print ("give "+str(request))
        return result


balance = 500

balance = withdraw(balance, 277)
balance = withdraw(balance, 30)
balance = withdraw(balance, 0)
balance = withdraw(balance, 500)

#23

رائع جداً يا صهيب… ما رأيك بجعل المتغير result يحتوي على القيمة الراجعة وارجاعه في نهاية الدالة بدل استعمال أكثر من return :wink:


#24

here is my code after a little bit of searching :smile:

money = 500
allowed1 = [50, 100, 10, 5]
allowed = sorted(allowed1,key=int,reverse=True)


def withdraw(balance,request):
    print('you have', balance,'in there :D')
    if request <=balance:
        while request > 0:
            for i in allowed :
                while request >= i:
                    print ('give',i)
                    request -= i
                    balance -= i
            print ('give',request)
            request -= request
        
        return balance

    else:
        print('Sorry, no enough money')
        return balance

money = withdraw(money,277)

#25

عمل منظم ورائع :+1:

بإمكانك استعمال نفس المتغير في السطرين:

allowed1 = [50, 100, 10, 5]
allowed = sorted(allowed1,key=int,reverse=True)

لتصبح:

allowed = [50, 100, 10, 5]
allowed = sorted(allowed, key=int, reverse=True)

#27

مرحبا استاذي هذي محاولتي هل أنا صحيحة
لقد لاحظت اني الوحيدة التي استعملت القيمة val لحفظ القيمة الأولية لـ request لان الدالة تقوم بتغيير قيمتها الأولية وهذا من أجل الحصول على قيمة الباقي من الرصيد أي return balance-val ما ؤايك استاذ

balance = 500
val = 0
def withdraw(balance, request):
    val = request
    print("the balance is",balance)
    if   request > balance:
        print("Can't give you all this money !!")
    elif request < 0:
        print("More than zero plz!")
    else:
        while request > 0:
            if request >= 100:
                request -= 100
                print("give 100")
            elif request >= 50:
                request -= 50
                print("give 50")
            elif request >= 10:
                request -= 10
                print("give 10")
            elif request >= 5:
                request -= 5
                print("give 5")
            elif request < 5:
                print("give " + str(request))
                request = 0
        return balance-val


balance = withdraw(balance, 277)
print("a new balance is :",balance)
balance = withdraw(balance, 30)
print("a new balance is :",balance )
balance = withdraw(balance, 5)
print("a new balance is :",balance )
balance = withdraw(balance, 500)
print("a new balance is :",balance )

#28

عمل رائع… لكن يوجد حل بدون الإحتفاظ بقيمة المتغير, هل بإمكانك اكتشافه :wink:


#29

ما اظن راح القاه استاذ ياسر ياريت تساعدني
ثانيا حبذا لو تعملنا درس خاص حول الكلاس والابجكت object مع بعض التمارين لأننا المبتدئين يصعب علينا فهمها جيدا وبارك الله فيك


#30

الأمر سهل, قبل البدء بعملية تغيير الـ request بإمكانك إضافة السطر هنا:

    else:
        result = balance-val

        while request > 0:     
            if request >= 100:
                request -= 100
            ...

        return result

الدروس القادمة حول الـ OOP فيها بعض المفاهيم, طبقي الورشات حولها.


#31

شكرا :blush::blush::blush:


#32
def withdraw(balance,request):
    # allowed papers: 100, 50, 10, 5, and cents
    remain=balance-request
    if request > balance:
        print("Can't give you all this money !!")

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

    else:
        while request > 0:

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

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

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

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

            elif request < 5:
                print("give " + str(request))
                request = 0
    print('------------------------------------------')

    return remain



balance = 500

balance = withdraw(balance, 277)
balance = withdraw(balance, 30)
balance = withdraw(balance, 5)
balance = withdraw(balance, 500)

#33

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

فقط بالنسبة للمتغير remain, نتيجته ممكن تكون بالسالب لو كان request أكبر من balance, ما رأيك كيف يمكن حلها ؟

مثال جرب هذا:

x = withdraw(500, 700)
print(x)

#34
balance = 1000
money=0
def withdraw(balance, money):
    money = int(input("Enter your request, please :"))
    result = balance
    if money > balance:
        print("Sorry we have not enough money!")

    else:
        result = balance - money

        while money > 0:
            if money >= 100:
                money -= 100
                print("give 100")

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

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

            elif money >= 5:
                money -= 5
                print("give 5")

            elif money < 5:

                print("give " + str(money))
                money = 0

    return result
while(money<balance):
    balance = withdraw(balance, money)
    
  1. قائمة العناصر

#35

عمل ممتاز يا فوزي :+1: