تمرین ۹:
توزیع کنندهی پول نقد در پایتون
دستگاه خودپردازی داریم که میتواند اسکناسهای ۱۰۰ دلاری، اسکناسهای ۵۰ دلاری و اسکناسهای ۲۰ دلاری پخش کند. برنامهای در پایتون بنویسید که ابتدا تعداد اسکناسهای موجود را دریافت کند. سپس مشتریان مبالغ مورد نظر خود را بر اساس اسکناسهای موجود برداشت میکنند و هر بار که مبلغی برداشت میشود، تعداد اسکناسهای موجود بهروزرسانی میشود. اگر مبلغ با اسکناسهای موجود مطابقت نداشته باشد، پیام خطا به مشتری نشان داده میشود. اگر اسکناسهای دستگاه خودپرداز تمام شود، پیام عذرخواهی نمایش داده میشود و برنامه خاتمه مییابد.
print("ATM Dispenser") print("pythonize.ir \t Programmer: Mohammad Rajabpur") print("--------------------------------------------------------------------------------\n") b100 = int(input("The number of hundred-dollar-bills = ")) b50 = int(input("The number of fifty-dollar-bills = ")) b20 = int(input("The number of twenty-dollar-bills = ")) while True: print("--------------------------------------------------------------------------------\n") print("Existing Bills:") print(b100, "hundered-dollar-bill(s) +", b50, "fifty-dollar-bill(s) +", b20, "twenty-dollar-bill(s)") s = int(input("Amount = ")) if b100 == 0 and b50 == 0 and b20 == 0: print("Sorry: The ATM is out of cash.") break flag = 0 for i in range((b100*100)//100, -1, -1): if flag == 1: break for j in range((b50*50)//50, -1, -1): if flag == 1: break for k in range((b20*20)//20, -1, -1): if i*100 + j*50 + k*20 == s: print(i, "hundered-dollar-bill(s) +", j, "fifty-dollar-bill(s) +", k, "twenty-dollar-bill(s)") flag = 1 b100 -= i b50 -= j b20 -= k break if flag == 0: print("The amount doesn't match the existing bills.")
================= RESTART: C:\ATM Dispenser.py ================ ATM Dispenser pythonize.ir Programmer: Mohammad Rajabpur -------------------------------------------------------------------------------- The number of hundred-dollar-bills = 10 The number of fifty-dollar-bills = 10 The number of twenty-dollar-bills = 10 -------------------------------------------------------------------------------- Existing Bills: 10 hundered-dollar-bill(s) + 10 fifty-dollar-bill(s) + 10 twenty-dollar-bill(s) Amount = 280 2 hundered-dollar-bill(s) + 0 fifty-dollar-bill(s) + 4 twenty-dollar-bill(s) -------------------------------------------------------------------------------- Existing Bills: 8 hundered-dollar-bill(s) + 10 fifty-dollar-bill(s) + 6 twenty-dollar-bill(s) Amount = 800 8 hundered-dollar-bill(s) + 0 fifty-dollar-bill(s) + 0 twenty-dollar-bill(s) -------------------------------------------------------------------------------- Existing Bills: 0 hundered-dollar-bill(s) + 10 fifty-dollar-bill(s) + 6 twenty-dollar-bill(s) Amount = 280 0 hundered-dollar-bill(s) + 4 fifty-dollar-bill(s) + 4 twenty-dollar-bill(s) -------------------------------------------------------------------------------- Existing Bills: 0 hundered-dollar-bill(s) + 6 fifty-dollar-bill(s) + 2 twenty-dollar-bill(s) Amount = 300 0 hundered-dollar-bill(s) + 6 fifty-dollar-bill(s) + 0 twenty-dollar-bill(s) -------------------------------------------------------------------------------- Existing Bills: 0 hundered-dollar-bill(s) + 0 fifty-dollar-bill(s) + 2 twenty-dollar-bill(s) Amount = 30 The amount doesn't match the existing bills. -------------------------------------------------------------------------------- Existing Bills: 0 hundered-dollar-bill(s) + 0 fifty-dollar-bill(s) + 2 twenty-dollar-bill(s) Amount = 40 0 hundered-dollar-bill(s) + 0 fifty-dollar-bill(s) + 2 twenty-dollar-bill(s) -------------------------------------------------------------------------------- Existing Bills: 0 hundered-dollar-bill(s) + 0 fifty-dollar-bill(s) + 0 twenty-dollar-bill(s) Amount = 540 Sorry: The ATM is out of cash.