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

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

عمل جميل أخي لكن أنصحك بعدم اعتماد الإختصارات كإسم للمتغيرات لكي يكون الكود واضح وسهل فهمه:

req => request
bla => balance
2 Likes

انشاءالله اخي

1 Like

ما رأيكم في هذا الكود ؟

class ATM:

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

    def withdraw(self, request):
        if self.balance <= 0:
            print(f'Your balance is empty: {str(self.balance)} $')
        elif request <= 0:
            print('Please enter a valid amount')
        elif request > self.balance:
            print('Your request is upper than your balance!')
        else:
            print(f'Your {self.bank_name} balance is: {str(self.balance)} $.')
            self.balance -= request
            
            while request > 0 < self.balance:
                
                if request >= 100:
                    request -= 100
                    print('100 $')
                elif request >= 50:
                    request -= 50
                    print('50 $')
                elif request >= 20:
                    request -= 20
                    print('20 $')
                elif request >= 10:
                    request -= 10
                    print('10 $')
                elif request >= 5:
                    request -= 5
                    print('5 $')
                elif request >= 2:
                    request -= 2
                    print('2 $')
                elif request >= 1:
                    request -= 1
                    print('1 $')
            print(f'Your new {self.bank_name} balance is: {str(self.balance)} $.')
            
balance1 = 500
balance2 = 300

atm1 = ATM('AGB', balance1)
atm2 = ATM('BDL', balance2)

atm1.withdraw(400)
atm1.withdraw(10)
atm2.withdraw(140)
atm2.withdraw(170)
2 Likes

الله عليك يا اسماعيل :heart_eyes: @megaismail7 عمل متقن جدا … لا تعليق :clap:

2 Likes

شكرا هشام شكلنا محتاجين دعم معنوي :heart_eyes:⁦:v:⁩

2 Likes

أكيد اسماعيل @megaismail7 … دعمنا لبعضنا البعض هو طريقنا الى النجاح باذن الله :muscle:

2 Likes

أكيد…

2 Likes

مهمة عمل اكثر من ATM
بافتراض اننا نريد سحب نفس المبالغ من اكثر من بنك + طباعة اسم البنك والمبلغ المتبقى به بعد كل عمليات السحب منه

class ATM:

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

    def withdraw(self, request):
        # allowed papers: 100, 50, 10, 5, and cents
        print("Welcome to " , self.bank_name)
        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 = 1000
balance3 = 2000

atm1 = ATM(balance1, "Smart Bank")
atm2 = ATM(balance2, "Baraka Bank")
atm3 = ATM(balance3, "Hedra Bank")
# For example, if I withdraw the same amounts from each atms
# Then, print out the rest on each atm after all withdrawals
atms = [atm1, atm2, atm3]
req = [252, 2050, 97, 305 ]
for atm in atms:
    for r in req:
        atm.withdraw(r)
        if atm.balance > r:
            atm.balance -= r
    print("The rest of the balance", ":" , atm.balance)
    print("The end of this atm --------------- ")
1 Like

:grin:

عمل ممتاز يا هدرا :ok_hand:

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

   def print_information(self):
      print("Welcome to %s,Your balance is %d"%( self.bank_name, self.balance) ) 

   def valid(self , request):
      if request <= 0  |  request > self.balance:
         return False
      else:
         return True

   def withdraw(self, request):
      self.print_information()
      if self.valid(request):
       
         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
      else:
         print("Your request is not valid")
atm1=ATM("barakeh",10000)
atm1.withdraw(4054)
2 Likes
class ATM:
    def __init__(self,  bank_name, balance):
       self.bank_bame = bank_name
       self.balance = balance
    def withdraw(self, request):

        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 = 1000

atm1 = ATM(balance1, "Samba Bank")
atm2 = ATM(balance2, "Ryadh Bank")

atm1.withdraw(700)
atm1.withdraw(300)

atm2.withdraw(500)
atm2.withdraw(250)

print(balance)
2 Likes

كود مضبوط :100:

1 Like

جيد ندى ولكن انتبهي الى بعض الملاحظات :
في داله init

راعي دائما الترتيب في كتابة المعاملات عند استدعاء الدالة

atm1 = ATM(balance1, "Samba Bank")

هنا كتبت balance قبل bank_name والصحيح ان يكون نفس ترتيب كتابتهم في داله init

atm1 = ATM("Samba Bank", balance1)

أيضا انتبهي الى indentation وهي المسافات المتروكة للكود داخل البلوك
في دالة withdraw

def withdraw(self, request):
    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!")

بمعنى ان يكون الكود الخاص بالداله داخلها بمسافه واحده اوي 4 مسافات وكل الكود يكون بنفس الطريقه

أيضا return result

المفروض يتم تفيذها بعد الحلقه اي خارج while loop
قومي بالتعديل ومعك اذا في اي استفسار

1 Like
class ATM:

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

    def withdraw(self,request):
        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=300
balance2=2000

a1=ATM(balance1,"cack bank")
a2=ATM(balance2,"al_korime")

a1.withdraw(500)
a1.withdraw(175)

a2.withdraw(1300)
a2.withdraw(291)


    
2 Likes

عمل جميل يا yaznhassen

1 Like

صباح الخير لكم جميعا

money = 500
print("your balance", money)
# withdraw function
def withdraw(request):
    if request > money :
        print(" deposite more money into your account")

    elif request < 0:
        print("more than zero please")

    else:
        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)) # str for change the int to string
                request = 0
    print("-----------")
    return request
# end of the withdraw function
withdraw(277)
withdraw(100)
withdraw(125)
2 Likes

عمل اكثر من ATM

money = 500

print("your balance", money)

class ATM:
    # init
    def __init__(self,money,bank_name):
        self.money = money
        self.bank_name = bank_name

    # withdraw function
    def withdraw(self, request):

        print("Current Balance: ", self.money)
        result = money

        if request > self.money:
            print(" deposite more money into your account")

        elif request < 0:
            print("more than zero please")

        else:

            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))  # str for change the int to string
                    request = 0
                    result = self.money - request
            return result



# objects
customer1 = 1000
customer2 = 500
customer3 = 0

atm1 = ATM(customer1, "Ahli")
atm2 = ATM(customer2,"SABB")
atm3 = ATM(customer3, "Rajhi")
atm1.withdraw(277)
atm2.withdraw(300)
atm3.withdraw(100)
2 Likes

class ATM :
    def __init__(self,balance,bank_name):
        self.balance=balance
        self.bank_name=bank_name
    def widthraw(self,request):
        print(self.bank_name,'current balance=',self.balance,'$')
        result=self.balance

        if request > self.balance :
            print('')
        elif request < 0 :
            print('')
        else :
            while request > 0 :
                if request >= 100 :
                    request-=100
                    print('give 100$')

                if 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
        print('')    
        return result

balance1=500
balance2=1000

atm1 = ATM(balance1,"Smart_bank")   
atm2 = ATM(balance2,"Taslef_bank")  

atm1.widthraw(100)
atm1.widthraw(300)

atm2.widthraw(100)
atm2.widthraw(800)


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

    def give(self, request):
        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

    def withdraw(self, request):

        print(f"your bank is {self.bank_name}")

        print("Current balance = ", self.balance)
        result = self.balance

        self.give(request)


        result = self.balance - request

        return result

atm1 = ATM(700, "baraka bank")

atm1.withdraw(185)

3 Likes