عمل جميل يا Abrar.
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)
عمل جميل يا BassamMsmar.
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)
حل:
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)
عمل جميل يا alaa_aimen.
لو ممكن تستعمل خاصية تنسيق الاكواد في المجتمع كما هو موضح هنا:
عمل جميل يا attia7.
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
المشكلة في السطر:
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 !!! …
عمل جيد يا فاتن
بالنسبة للمتغير result
result=self.balance-request
يفترض أن عملية الانقاص، تتم بعد التحقق من إذا كان الرصيد balance أكبر من الطلب request
لأنه لا يتم تعديل self.balance داخل الدالة، بمعنى يجب أن يتم اضافة السطر التالي في نهاية الدالة:
self.balance = result
هـكـذا تـقـصـد . نـفـس الـنـاتـج !. مـافـهـمـت …
بقي فقط نقل السطر تبع تعديل قيمة result
if request>self.balance:
print("More than the Available amount")
result=self.balance-request
لاحظي أنه يتم انقاص result في حالة كان الطلب أكثر من الرصيد ونحن نريد العكس
عـدلـتـه كـذا …
حـاولـت كـثـيـر بـس مـا بـيـنـقـص الـرصـيـد فـي عـمـلـيـة الـسـحـب الـثـانـي !
حـتى فـي أكـواد الأشـخـاص الـمـشاركـيـن نـفس كـودي مـا يـنقـص عـندهـم !!!
ترتيب الأكواد مهم جدا، لأن مكان السطر في نهاية الدالة معناه أن قيمة 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)
عـمـلـتـهـا بـهـذه الـطـريـقـه كـمـان يـعـطـيـنـي نـفـس الـنـاتـج !!
هـذه صـورة الـنـاتـج الـ 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))
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)
اوبس
كان يتبقى إضافة سطر تغيير قيمة 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)
عموما، تحية لك لأنك حللت المشكلة بنفسك
يـسـلـمـوا تـعـبـتـك مـعـي …
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)