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

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

1 Like
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)
1 Like

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

1 Like

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)
1 Like

عمل منظم ورائع :+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)

مرحبا استاذي هذي محاولتي هل أنا صحيحة
لقد لاحظت اني الوحيدة التي استعملت القيمة 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 )
1 Like

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

1 Like

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

1 Like

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

    else:
        result = balance-val

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

        return result

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

1 Like

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

1 Like
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)
1 Like

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

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

مثال جرب هذا:

x = withdraw(500, 700)
print(x)
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. قائمة العناصر
1 Like

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

1 Like
mony=500
request=277




def withdraw(mony , request):
    print(mony)
    new_balance=mony-request
    print(new_balance)
   

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

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

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

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

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

        else:
             print("no found else..")             



withdraw(500,277)

باستخدام return

mony=500
request=277




def withdraw(mony , request):
    print(mony)
    #new_balance=mony-request
    #print(new_balance)
   

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

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

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

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

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

    return mony-request
       
    


withdraw(500,277)

1 Like

عمل رائع يا امنية :+1:

ماذا لو قمنا بعمل

x=withdraw(200, 300)

ماهي قيمة x؟ وهل هي مقبولة؟ :thinking:

1 Like

تجنب النسخ واللصق باستخدام الدوال

    papers=[100,50,10,5,2]
    while request > 0:
        if request > balance :
            print(" can't give you all this money !!")
            break

        for i in papers:
            if request  >= i:
                print('give' +' '+ str(i))
                request+=1
                balance-=i
                request-=i
                if not request==0 :break
        request-=1
    print('Your Balance Is'+' '+ str(balance))
    return balance


balance = 500

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

بعد التعديل

mony=500
request=277




def withdraw(mony , request):
    print(mony)
    #new_balance=mony-request
    #print(new_balance)
   

    while request<=mony:#التعديل


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

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

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

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

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

    return mony-request
       
    


withdraw(500,277)

1 Like

ما زلت أنتظر التعديلات التي تكلمنا حولها في المهمة السابقة في الدالة يا أحمد :wink: