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


#1

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

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

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

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


#2
balance = 500
def withdraw(balance, request):
	print(balance)
	if request <= balance:
		if request > 0 :
			while request > 0 :
				if request >= 100 :
					request -= 100
					balance -= 100
					print("give 100")

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

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

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

				else:
					balance -= request
					print("give",request)
					break
		else:
			print("please try again")
	else:
		print("not enough money")
	return balance
	


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

This text will be hidden


#3
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 " + str(request))
                request = 0

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

#4

عمل رائع :+1:

كان بإمكانك اختصار السطر balance -= وكتابته في مكان واحد :wink:


#5

عمل جميل !

هل انت متاكد من تغيير الرصيد في كل عملية سحب ؟


#6

شكراً مهندس
لقد رأيت الحل الذي قدمته في الفيديو
منك نتعلم :grinning:


#7

صراحة لا


#8

لاحظ مالذي تقوم هذه الأسطر في أكواد Yahya:

balance -= 100

#9

def withdraw(balance , request):

	print("balance: " + str(balance))

	if balance < request:
		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")

			else:
				request -= 5
				print("give 5")
 
	return balance

#10

السلام عليكم
اليكم محاولتي

balance = 500
blacknotes = [100, 50, 10, 5]
def withdraw(balance, request):
    if request > balance:
        print('Sorry! You have\'nt enough money')

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

    else:
        print('Your balance is: '+str(balance))
        while request > 0:
            if request >= blacknotes[0]:
                print('give '+str(blacknotes[0]))
                request-= blacknotes[0]
            elif request < blacknotes[0] and request >= blacknotes[1]:
                print('give '+str(blacknotes[1]))
                request-= blacknotes[1]
            elif request < blacknotes[1] and request >= blacknotes[2]:
                print('give '+str(blacknotes[2]))
                request-= blacknotes[2]
            elif request < blacknotes[2] and request >= blacknotes[3]:
                print('give '+str(blacknotes[3]))
                request-= blacknotes[3]
            elif request < blacknotes[3]:
                print('Can\'t give blacknote of: '+str(request))
                break
            balance-= request
        print('New balance = '+ str(balance))
    return balance

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

#11

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

def withdraw(balance, money):
    r = int(input("Enter your request, plz :"))
    money = r
    result = balance
    if money > balance:
        print("Sorry we have not enough money!")
    elif money < 0:
        print("Please , the number should be greater than zero ")
    else:
        result = balance - money
        print("Yes , just seconds.....")
        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


balance = 1000

balance = withdraw(balance, 200)
balance = withdraw(balance, 200)
balance = withdraw(balance, 100)
print(balance)

#12

حل مضبوط ونظيف :+1:


#13

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

بالنسبة للسطر:

balance-= request

هل أنت متأكد من مكانه ؟
hint: watch debugging video :wink:

بما أنك استعملت list
ما رأيك تستعمل for loop على هذه القائمة ثم تقوم بالحصول على باقي القسمة باستعمال modulus operator:

5 % 2 = 1
4 % 2 = 0
250 % 100 = 50

#14

حل رائع :+1:

ماهي فائدة المتغير r ؟

    r = int(input("Enter your request, plz :"))
    money = r

هل بإمكانك استعمل سطر واحد بدلاً من السطرين ؟


#15

السلام عليكم ورحمة الله وبركاته
لاني حبيت اجعله اكتر تفاعلية
وطبعا حاولت اعدل في الدالة بحيث تقبل الارقام المدخلة لها فقط ما نفع
فاكتفيت باضافة

بس هي تعمل تاخذ من المستخدم الارقام وايضا اذا لم يدخل ارقام تعمل بالارقام الموجودة في استدعائها
وسأحاول ان اعدلها بحيث تقبل الارقام من المستخدم فقط؟ ودي مهمة بالنسبة لي مش سهلة ابدا!!


#16

ما اقصد انه يمكن كتابة

money = int(input...

وبهذا نتخلص من المتغير r


#17

تم التعديل
شكرا لحضرتك
هو ممكن يكتفي البرنامج بالارقام المدخلة من المستخدم فقط ؟


#18

نعم والدالة int تضمن انه يدخل فقط ارقام


#19
balance = 500
blacknotes = [100, 50, 10, 5]
def withdraw(balance, request):
    if request > balance:
        print('Sorry! You have\'nt enough money')

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

    else:
        print('Your balance is: '+str(balance))
        balance -= request
        while request > 0:
            if request >= blacknotes[0]:
                print('give '+str(blacknotes[0]))
                request-= blacknotes[0]
            elif request < blacknotes[0] and request >= blacknotes[1]:
                print('give '+str(blacknotes[1]))
                request-= blacknotes[1]
            elif request < blacknotes[1] and request >= blacknotes[2]:
                print('give '+str(blacknotes[2]))
                request-= blacknotes[2]
            elif request < blacknotes[2] and request >= blacknotes[3]:
                print('give '+str(blacknotes[3]))
                request-= blacknotes[3]
            elif request < blacknotes[3]:
                print('Can\'t give blacknote of: '+str(request))
                break

        print('New balance = '+ str(balance))
    return balance

balance = withdraw(balance, 277)
balance = withdraw(balance, 30)
balance = withdraw(balance, 5)
balance = withdraw(balance, 500)
balance = 500
blacknotes = [100, 50, 10, 5]
def withdraw(balance, request):
    if request > balance:
        print('Sorry! You have\'nt enough money')

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

    else:
        print('Withdraw: ' , request)
        print('Your balance is: ' + str(balance))

        for blacknote in blacknotes:
            while request >= blacknote:
                print('give ' + str(blacknote))
                request -= blacknote
                balance -= blacknote
        if request % 5 != 0:
            print('give ' + str(request) + ' pieces')
            balance -= request
            request = 0


        print('New balance = '+ str(balance))
    return balance

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

شكرا جزيلا أستاذنا الغالي @yaserAlnajjar


#20

أصبح الكود رائع جداً يا عادل … well done :wink: