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

شكرا لكم على هذه المنصة الرائعة، عند وصولي دروس الكلاس والاوبجكت اصبحت اشعر بعدم الفهم واستيعاب كل شيء، حتى وإن حللت التمارين سيكون حفظ بدون فهم هل سيكون هناك توضيحات لاحقة عن ذلك لاحقاً، بخصوص ريتورن أو سيلف وما شابه، مثلا لماذا يجب أن يكون سيلف اول عنصر وهكذا

1 Like

أعتذر منك يا خالد على التأخر بالرد…

لا تقلق، الأمر عادي جدا كونها مفاهيم جديدة

نعم يوجد توضيحات لاحقة، وأيضا لو يوجد أي سؤال محدد ضعه هنا أو في موضوع منفصل في المنتدى (سؤال)، وسيتم إيضاح كل شيء :wink:

بإمكانك اختيار اي اسم اخر بدل self، مثلا x أو this

لكن احسب حساب أن المتغير الأول يشير إلى الـ object نفسه،

يعني لو تريد الدخول على قيمة الـ balance داخل الصراف الآلي نفسه تكتب self.balance… هذه هي فكرة الاوبجكت والكلاس أن كل اوبجكت تقدر تعدل بياناته لوحده

1 Like

شكرا لردك اخ ياسر،

يعني مثل this اللي في php والفرق أنه في هنا لازم نعرفها صح

1 Like

بالضبط، المهم هو معرفة البرمجة ككل… أما طريقة الكتابة (أو ما يعرف بـ syntax) لغات البرمجة يخلتف من لغة إلى أخرى :grin:

1 Like
def kd (bla, req):
    if bla ==0:
        print("مافي فلوس ")
    if req>bla:
         print("plz again no maony enough ")
    elif req <0 :
         print("are you kidning me ???")
    else:
        while req >0:
            if req >=100:
                req -=100
                print("give 100")
            elif req >=50:
                req -=50
                print("give 50")
            elif req >=10:
                req -=10
                print("give 10")
            elif req >=5:
                req -= 5
                print("give 5")
            elif req <5:
                print("give"+str(req))
                req =0
    return req-bla
bla = 500
kd(bla,300)
kd(bla,245)
kd(bla,50)
kd(bla,100)
1 Like

عمل جيد يا محمد :+1:

بالنسبة لتنسيق الأكواد أرجوا أن تطلع على الطريقة هنا:

أيضا جرب الكود:

bla = 500
kd(bla,300)
kd(bla,300)

المطلوب هو 600، لكن الرصيد 500… مع ذلك سيقوم بقبول العمليتين :smile:

ماهو الحل برأيك؟

1 Like

نخصم من الرصيد ميه في كل عملية صح؟
بحاول احلها ببايثون

1 Like

لا، الحل المناسب هو تعديل الرصيد خلال كم عملية حسب القيمة الراجعة:

bla = 500
bla = kd(bla,300)
bla = kd(bla,300)
1 Like
from random import randint

def withdraw():
    balance = randint(-10, 1000)
    request = randint(-10, 1000)
    requested = 0
    if balance <= 0:
        print('Your balance does not enough!')
    elif request <= 0:
        print('Please enter an valid amount.')
    elif request > balance:
        print("Can't give you all this money !!")
    else:
        print('your balance is: ', balance, '\nyour request is: ', request)
        while request > 0:

            if request >= 100:
                request -= 100
                requested += 100
                print("give 100 Dollar(s)")

            elif request >= 50:
                request -= 50
                requested += 50
                print("give 50 Dollar(s)")

            elif request >= 20:
                request -= 20
                requested += 20
                print("give 20 Dollar(s)")

            elif request >= 10:
                request -= 10
                requested += 10
                print("give 10 Dollar(s)")

            elif request >= 5:
                request -= 5
                requested += 5
                print("give 5 Dollar(s)")

            elif request >= 2:
                request -= 2
                requested += 2
                print("give 2 Dollar(s)")
            elif request >= 1:
                request -= 1
                requested += 1
                print("give 1 Dollar(s)")
        print('new balance is: ', (balance - requested))

withdraw()

1 Like

مرحبا اخي الكود شبه صحيح بس مطلوب في المهمه استعمال بارامترات balance و request يعني نريد المستخدم هو يدخل البيانات وليس جلبهم عشوائيا.
عدل الكود وابعت من جديد هنا :relaxed:

2 Likes

اعلم لكن أردت أن يعطيني الكود مخرجات مختلفة

2 Likes

اهاا هكذا معك حق :grin:

2 Likes

مشاركتـــي:

balance=500
def withdraw(balance , request):
    print("your 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
                balance -= 100
                print("give 100")

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

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

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

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


    print("the rest is: ",balance-request,"$")

    return balance

balance=withdraw(balance,277)
balance=withdraw(balance,50)
balance=withdraw(balance,5)
balance=withdraw(balance,8)
balance=withdraw(balance,120)

````
1 Like

عمل رائع يا هشام :+1:

**مهمة تجنب النسخ واللصق باستخدام الدوال **
سحب اربع مبالغ على التوالى من اجمالى رصيد 500 وطباعة المبلغ المتبقى من الاجمالى فى كل مرة سحب

balance = 500
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 " , request)
                request = 0
                break
           
req = [252, 50, 87, 105 ]
for r in req:
    withdraw(balance, r)
    balance -= r
    print("The rest of the balance", ":" , balance)
1 Like
def withdraw(money,request):

    if request <= 0:
        print("input valid value")
    elif request > money:
            print('no enough money')
    else:
        while request > 0:
            if request >= 100:
                print('give100')
                request -= 100
            elif request >= 50:
                print('give50')
                request -= 50
            elif request >= 10:
                print('give10')
                request -= 10
            elif request >= 5:
                print('give5')
                request -= 5
            elif request > 0 : 
                print('give' , request)
                request=0
money = 500
request = int(input())
withdraw(money,request)
money-=request
request = int(input())
withdraw(money,request)
money-=request
request = int(input())
withdraw(money,request)
1 Like

كالعادة حلولك رائعة يا هدرا :ok_hand:
انتقل على التالي

عمل رائع يا صفاء :ok_hand:

بالنسبة لتنسيق الأكواد، لو ممكن تطلعي على هذا الموضوع:

مرجع استعمال المحرر في مجتمع كورتابز

فقط تستعملي ``` قبل وبعد الكود

قمت بعمل التعديلات اللازمة على الكود خاصتك :wink:

def withdraw(balance, request):
# your function here
# allowed papers: 100, 50, 10, 5, and cents
#balance = 500; request = 275;

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 - request

balance = 500

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

1 Like
balance=500
def withdraw(balance,request):
        print(balance)
    while request>0:
    if request > balance:
        print("Can't give you all this money !!")
    elif request >=100:
        print('give 100')
        request-=100
    elif request >=50:
        print('give 50')
        request-=50
    elif request >=10:
         print('give 10')
         request-=10
    elif request >=5:
        print('give 5')
        request-=5
    elif request >0:
        print('give 1')
        request-=1
    elif request < 0:
        print("More than zero plz!")
    return balance-request
balance = withdraw(balance, 277)
balance = withdraw(balance, 30)
balance = withdraw(balance, 5)
balance = withdraw(balance, 500)

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

balance=500
def withdraw(balance,request):
        print(balance)
    while request>0:
    if request > balance:
        print("Can't give you all this money !!")
    elif request >=100:
        print('give 100')
        request-=100
    elif request >=50:
        print('give 50')
        request-=50
    elif request >=10:
         print('give 10')
         request-=10
    elif request >=5:
        print('give 5')
        request-=5
    elif request >0:
        print('give 1')
        request-=1
    elif request < 0:
        print("More than zero plz!")
    return balance-request
balance = withdraw(balance, 277)
balance = withdraw(balance, 30)
balance = withdraw(balance, 5)
balance = withdraw(balance, 500)
2 Likes