مشاركة حلول: عمل أكثر من atm

عمل جميل يا Abrar.

1 Like
class ATM:

	def __init__(self  , balance ,bank_name):
		self.balance =balance
		self.bank_name =bank_name


	def withdraw(self ,request ):
		print("Welcome in :" , self.bank_name)
		if request >= self.balance:
			print("can't complit your request  ")
		elif request < 0 :
			print("oops !? Add another zero to complete the request")
		else:
			self.balance = self.balance - request
			while request > 0:


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

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


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

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

				elif request <= 5:
					print("give" ,request)

					break



		return self.balance






atm1 =ATM( 1000 ,"Saba")
atm2 =ATM( 1200 ,"INB")

atm1.withdraw(525)
atm2.withdraw(780)
2 Likes

عمل جميل يا BassamMsmar.

1 Like

class ATM:

def __init__(self,balance,bank_name):
	self.balance = balance
	self.bank_name = bank_name


def print_information(self):
	print("Welcome to ", self.bank_name)
	print("current balance: ",  self.balance))


def check_balance(self , request):	
	if self.balance < request:
		print("Can't give you all this money !!")

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



def withdraw(self, request):

	if self.balance > request:
		self.balance = self.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 self.balance			

atm1 = ATM(1233333, “bna bank”)
atm2 = ATM(800000, “baraka bank”)

atm1.print_information()
atm1.check_balance(300)
atm1.withdraw(300)

atm1.print_information()
atm1.check_balance(250)
atm1.withdraw(250)

atm2.print_information()
atm2.check_balance(500)
atm2.withdraw(500)

atm2.print_information()
atm2.check_balance(455)
atm2.withdraw(455)

1 Like

حل:

class ATM:
  def __init__(self, balance, bank_name):
    self.balance = balance
    self.bank_name = bank_name

  def greeting(self):
    print('Wellcom to {0} Bank'.format(self.bank_name))

  def get_currentbalance(self):
    print('your balance >>', self.balance)

  def check_balance(self, request):
    if not(self.balance > request) :
      print('Sorry, you are try withdraw: {0}, but Your balance just : {1}'.format(request, self.balance))
    else:
      return self.balance > request

  def withdraw(self, request):
    self.greeting()
    self.get_currentbalance()
    #check_result = self.check_balance(request)
    if (self.check_balance(request)):
      give = 0
      self.balance -= request
      while request > 0:
        if request >= 100:
          give = 100
        elif request >= 50:
          give = 50
        elif request >= 10:
          give = 10
        elif request >= 5:
          give = 5
        else :
          give = request
        print('give',give)
        request -= give

balance1 = 400
balance2 = 500

atm1 = ATM(balance1,"Samba")
atm2 = ATM(balance2,"ALRajhi")

atm1.withdraw(777)
atm2.withdraw(276)
atm1.withdraw(34)
atm2.withdraw(5)
atm1.withdraw(800)
1 Like

عمل جميل يا alaa_aimen.
لو ممكن تستعمل خاصية تنسيق الاكواد في المجتمع كما هو موضح هنا:

1 Like

عمل جميل يا attia7.

1 Like

class ATM:
    def __init(self, balance,bank_name):
        self.balance = balance
        self.bank_bame = bank_name

    def withdraw(self, request):
        # allowed papers: 100, 50, 10, 5, and cents
        print("Current balance = ", self.balance)
        result = self.balance

        if request > self.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

            result = self.balance - request

        return result


balance1 = 500
balance2 = 500

atm1 = ATM(balance1, "smart Bank")
atm2 = ATM(balance2, "Braka Bank")

atm1.withdraw(100)
atm2.withdraw(200)


ليش يعطيني Erorr
atm1 = ATM(balance1, “smart Bank”)
TypeError: object() takes no parameters

1 Like

المشكلة في السطر:

def __init(self, balance,bank_name):

المفترض بدلاً من __init

أن تكتب بهذا الشكل__init__

مـهـمـة عـمـل أكـثـر مـن ATM

class ATM:
   def __init__(self,balance,bank_name):
       self.balance=balance
       self.bank_name=bank_name
       
   
   def withdraw(self,request):
       print("Welcome to ",self.bank_name)
       print("Current balance = "+str(self.balance))
       result=self.balance
       if request>self.balance:
          print("More than the Available amount")
        
       elif request<0:
          print("More than zero please")
          
       else:
           
          
           while request>0:
              if 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<5:
                 print("give "+str(request))
                 request-=request
            
      
                result=self.balance-request
   
       return result
       
balance1=500
balance2=700

atm1=ATM(balance1,"Smart Bank")   
atm2=ATM(balance2,"Baraka Bank") 

atm1.withdraw(600)
atm1.withdraw(277)

atm2.withdraw(200)
atm2.withdraw(500)

سـؤال : لـيـش لا يـتـم إنـقـاص الـ balance بـعـد كـل عـمـلـيـة سـحـب يـعـنـي مـثـلآ بـعـد مـا سـحـبـت مـن الـ balance الـلـي هـو 700 مـثلآ 200 لازم يـظـهـر فـي الـسـحب الـثـاني الـ balance الـحـالي 500 !!! …

1 Like

عمل جيد يا فاتن :+1:

بالنسبة للمتغير result

result=self.balance-request

يفترض أن عملية الانقاص، تتم بعد التحقق من إذا كان الرصيد balance أكبر من الطلب request

لأنه لا يتم تعديل self.balance داخل الدالة، بمعنى يجب أن يتم اضافة السطر التالي في نهاية الدالة:

self.balance = result
1 Like

هـكـذا تـقـصـد :point_up: . نـفـس الـنـاتـج !. مـافـهـمـت :persevere:

1 Like

بقي فقط نقل السطر تبع تعديل قيمة result

       if request>self.balance:
          print("More than the Available amount")
          result=self.balance-request

لاحظي أنه يتم انقاص result في حالة كان الطلب أكثر من الرصيد ونحن نريد العكس :grin:

1 Like

عـدلـتـه كـذا :point_up:

حـاولـت كـثـيـر بـس مـا بـيـنـقـص الـرصـيـد فـي عـمـلـيـة الـسـحـب الـثـانـي !

حـتى فـي أكـواد الأشـخـاص الـمـشاركـيـن نـفس كـودي مـا يـنقـص عـندهـم !!!

1 Like

ترتيب الأكواد مهم جدا، لأن مكان السطر في نهاية الدالة معناه أن قيمة request تساوي صفر

لأن الحلقة هذه:

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

دورها الرئيسي هو إنقاص قيمة المتغير request حتى يصل إلى الصفر، لذا تصبح لديكي الأكواد النهائية بهذا الشكل:

class ATM:
   def __init__(self,balance,bank_name):
       self.balance=balance
       self.bank_name=bank_name
       
   
   def withdraw(self,request):
       print("Welcome to ",self.bank_name)
       print("Current balance = "+str(self.balance))
       result=self.balance
       if request>self.balance:
          print("More than the Available amount")
        
       elif request<0:
          print("More than zero please")
          
       else:
           
           result=self.balance-request

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

       return result
       
balance1=500
balance2=700

atm1=ATM(balance1,"Smart Bank")   
atm2=ATM(balance2,"Baraka Bank") 

atm1.withdraw(600)
atm1.withdraw(277)

atm2.withdraw(200)
atm2.withdraw(500)

1 Like

عـمـلـتـهـا بـهـذه الـطـريـقـه كـمـان يـعـطـيـنـي نـفـس الـنـاتـج !!

هـذه صـورة الـنـاتـج الـ balance مـا يـنـقـص فـي عـمـلـيـة الـسـحـب الـثـانـيـه !!!

1 Like

ضـبـطـت مـعـي كـذا …

class ATM: 
   def __init__(self,balance,bank_name): 
      self.balance=balance 
      self.bank_name=bank_name 
   def withdraw(self,request): 
     print("Welcome to ",self.bank_name) 
     print("Current balance = "+str(self.balance)) 
    
     if request>self.balance: 
        print("More than the Available amount")
     elif request<0: 
        print("More than zero please") 
     else:
       
        self.balance-=request
        while request>0: 
           if 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<5:
               print("give "+str(request))
               request-=request
             
     return self.balance
          
          
balance1=500
balance2=700 
atm1=ATM(balance1,"Smart Bank")
atm2=ATM(balance2,"Baraka Bank")
atm1.withdraw(600) 
atm1.withdraw(277) 
atm2.withdraw(200) 
atm2.withdraw(100)
atm2.withdraw(500) 



1 Like

اوبس :sweat_smile:

كان يتبقى إضافة سطر تغيير قيمة self.balance كما أشرت سابقاً (على نهاية الدالة) بهذا الشكل:

class ATM:
   def __init__(self,balance,bank_name):
       self.balance=balance
       self.bank_name=bank_name
       
   
   def withdraw(self,request):
       print("Welcome to ",self.bank_name)
       print("Current balance = "+str(self.balance))
       result=self.balance
       if request>self.balance:
          print("More than the Available amount")
        
       elif request<0:
          print("More than zero please")
          
       else:
           
           result=self.balance-request

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

       self.balance = result # <====== هذا هو السطر المقصود
       return result
       
balance1=500
balance2=700

atm1=ATM(balance1,"Smart Bank")   
atm2=ATM(balance2,"Baraka Bank") 

atm1.withdraw(600)
atm1.withdraw(277)

atm2.withdraw(200)
atm2.withdraw(500)

عموما، تحية لك لأنك حللت المشكلة بنفسك :wink:

1 Like

يـسـلـمـوا تـعـبـتـك مـعـي …

1 Like
class Atm:
    def __init__(self, bla,bank_name):
           self.bla = bla
           self.back_name =bank_name

    def withdraw(self,req):
         self.bla
         if req >self.bla:
             print("plz again")
         elif req <= 0:
             print("are you kidning me ???")
         else:
            print(self.back_name)
            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
                 re = self.bla - req
         return re
bl1 = 1000
atm = Atm(bl1,"smart bank")
atm2 = Atm(10000,"bank hmoody")
atm.withdraw(400)
atm2.withdraw(900)
1 Like