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

عمل جميل جدا اخي خير الدين، اتبع رابط الفيديو الذي ارسلته لك امس لتنسيق الكود.
بارك الله فيك

1 Like

لاحظت مشاركتك الآن يا اسراء :sweat_smile:

المشكلة بسيطة جداً، لاحظي أنك تقومي في الأخير بعمل return balance - request، لكن وقتها تكون قيمة request صفر لأنه تم سحب كل المبلغ منه خلال حلقة while :smile:

الحل هو جعل الدالة بهذا الشكل:

def withdraw(balance, request):
    result = request
    if request < balance:
        result = balance - request
        while request>0:
            if request>=100:
                ...
    return result

الكود بهذا الشكل يحتفظ بقيمة request في متغير آخر اسمه result

لو الطلب مناسب (request < balance)، يقوم بإنقاص القيمة في السطر result = balance - request

وفي الأخير يرجع result

لو هناك أي شيء غير واضح، أخبريني وسأكون سعيد بتوضيحه :blush:

2 Likes

شكرا لك يا استاذ :blush:
هذا صحيح :sweat_smile: سوف اجربها واخبرك اذا كانت هناك مشكلة

1 Like
def withdraw(balance, request):
    print(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

balance = 500

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

balance = withdraw(balance, 500)
1 Like
def withdraw (balance,request):
    if request > balance:
        print("Can't give you all this money !!")
        
    elif request < 0:
        print("More than zero plz!")

    else:
        balance=balance-request
        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 < 5:
               print("give " + str(request))
               request = 0

    return balance




balance=500


balance=withdraw (balance,277)
print(balance)
balance=withdraw (balance,125)
print(balance)
balance=withdraw (balance,600)
print(balance)
balance=withdraw (balance,-10)
print(balance)

3 Likes

جميل جدا يا خير الدين
ملاحظة بسيطة: لاحظ ان البرنامج لا يطبع قيمة الرصيد الاولي.

1 Like

البرنامج يظهر خطء , الخطء فى قيم المتغيرات مع الشرح ل if elif else

def withdraw(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
            

balance = 500

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

عمل جميل اخي عبد الله
الخطأ أن قيمة المتغير balance غير معروفة في العملية الثانية

 balance = withdraw(balance, 30) 

يعني انه امامك حلين
اما ان تقوم بمنح المتغير balance قيمة قبل كل عملية هكذا

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

و هذا الامر غير مقبول لأن فيه نسخ و لصق
الحل الثاني تضع في نهاية الدالة الامر
return balance
و هذا الامر يعيد قيمة المتغير balance
هناك امر آخر
لاحظ ان القيمة balance لا تتغير يعني انك لم تنقص قيمة request من القيمة الاصلية للرصيد balance.
بالتوفيق

1 Like
def withdraw(balance, request):
# allowed papers: 100 , 50 , 10 , 5 , and cents
    print('current balance= ', balance)
    result = balance
    
    if request > balance:
        print('cant give you all this money !')
        
    elif request < 0:
        print('more then zero plz!')
        
    else:
        result = balance - request
        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 result

balance = 500

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

عمل رائع :rose: @arijtrabelsi

2 Likes

سامحونى على الاطالة لكنى اعمل والوقت غير كافى.
@makhlouf

def withdraw(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
        return balance

balance = 500

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

هكذا اكثر من المطلوب :thinking:

give 100
give 100
give 50
give 10
give 10
give 5
give 2
give 10
give 5
give 100
give 100
give 100
give 100
give 100
2 Likes

عمل رائع اخي abdallahmiri.

2 Likes
balance=500
def withdraw(balance,request):
    print("your balace is:",balance)
    if request>balance:
        print("can't give you all this money!!")
    elif request<0:
        print("More than zero plz")
    else:
        balance=balance-request
        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-=request
                request=0
        print("the remaining balance is:",balance)
        return balance  
balance=withdraw(balance,277)
balance=withdraw(balance,30)
balance=withdraw(balance,5)
withdraw(balance,500)

2 Likes

جميل جدا امال

2 Likes

:bouquet:

2 Likes
def withdraw(balance , request):


    if request > balance:
        print("cant give it")

    elif request <0:
        print("more plz")

    else:
        newbalance = balance - request
        print(newbalance)

        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 newbalance









balance = 500

balance = withdraw(balance, 277)



1 Like

عمل جيد أمينة :+1:

لكن في حال قمنا بعمل:

balance = 500
balance = withdraw(balance, 700)

ماهي قيمة balance ؟

#App: ATM card program
# Author: Fadi Rustom
balance=500

# Definition of Function
def withdraw(request, balance, i=1):
    if request > balance:
        print("أدخل مبلغاً أقل لأن رصيدك حاليا",balance,"$")
    else :
        while request >0:
            if request > 99:
                print(i, " Give 100$")
                request -= 100
            elif request > 49:
                print(i, " Give 50$")
                request -= 50
            elif request > 9:
                print(i, " Give 10$")
                request -= 10
            elif request > 4:
                print(i, " Give 5$")
                request -= 5
            else:
                if i < 5:
                    print(i, " Giv 1$")
                    request -= 1
                else:
                    print(i, " Give ", request, " $")
                    request -= i
            i += 1
            balance -= request
    return balance


print ( "Req1 ")
request=int(input("أدخل المبلغ المراد سحبه"))
balance = withdraw(request,balance)

print ( "Req2  ")
request=int(input("أدخل المبلغ المراد سحبه"))
balance = withdraw(request,balance)

print ( "Req3   request=   99")
balance = withdraw(99,balance)

print ( "Req4   ")
balance = withdraw(139,500)

1 Like

عمل رائع يا فادي :+1: … انتقل للمهمة التالية

def verifying(pin):
    # todo varification PIN code.

    if pin == '1234':
        return True
    else:
        return False


def login():
    # todo a multible login (4 as maximam)

    tries = 0
    while tries < 4:
        pin = input('Please Enter Your 4 Digit Pin: ')
        if verifying(pin):
            print(" Welcome ! ")
            return True
        else:
            print("Invalid pin")
            tries += 1
    print("Too many incorrect tries. couldn't login")
    return False


# allowed papers: 100, 50, 10, 5, and rest of request
def withdraw(money, request):
    # Todo function for allowed papers requests
    while request > 0:
        if request > money:
            print("Sorry, this account is out of amount !")
            break
        elif request >= 100:
            request -= 100
            print('export 100')
        elif request >= 50:
            request -= 50
            print('export 50')
        elif request >= 10:
            request -= 10
            print('export 10')
        elif request >= 5:
            request -= 5
            print('export 5')
        elif request < 5:
            print('rest', request)
            request -= request
        return money - request


def main():
    print("Welcome to the atm!")
    if login():
        balance1 = 500
        balance1 = withdraw(money=balance1, request=int(input('enter the withdraw..:')))
        balance1 = withdraw(money=balance1, request=int(input('enter the withdraw..:')))

    print('done..')


main()

1 Like