تمرین‌ها

تمرین ۹:

توزیع کننده‌ی پول نقد در پایتون

دستگاه خودپردازی داریم که می‌تواند اسکناس‌های ۱۰۰ دلاری، اسکناس‌های ۵۰ دلاری و اسکناس‌های ۲۰ دلاری پخش کند. برنامه‌ای در پایتون بنویسید که ابتدا تعداد اسکناس‌های موجود را دریافت کند. سپس مشتریان مبالغ مورد نظر خود را بر اساس اسکناس‌های موجود برداشت می‌کنند و هر بار که مبلغی برداشت می‌شود، تعداد اسکناس‌های موجود به‌روزرسانی می‌شود. اگر مبلغ با اسکناس‌های موجود مطابقت نداشته باشد، پیام خطا به مشتری نشان داده می‌شود. اگر اسکناس‌های دستگاه خودپرداز تمام شود، پیام عذرخواهی نمایش داده می‌شود و برنامه خاتمه می‌یابد.

کد:
 
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.