CURRENCY_DENOMINATIONS = [5000, 2000, 1000, 500, 200, 100, 50, 20, 10, 5, 2, 1]
def get_user_inputs():
while True:
try:
amount_due = float(input("请输入需支付的金额:"))
amount_paid = float(input("请输入实际支付的金额:"))
if amount_paid < amount_due:
print("支付金额不足,请重新输入。")
else:
return amount_due, amount_paid
except ValueError:
print("输入无效,请输入数字。")
def calculate_change_breakdown(change_cents):
breakdown = []
for denom in CURRENCY_DENOMINATIONS:
count = change_cents // denom
change_cents = change_cents % denom
breakdown.append(count)
return breakdown
def print_results(amount_due, amount_paid, change, breakdown):
print(f"需支付的金额:{amount_due:.2f}元")
print(f"实际支付的金额:{amount_paid:.2f}元")
print(f"找零金额为:{change:.2f}元")
denominations_names = ['50元纸币', '20元纸币', '10元纸币', '5元纸币', '2元纸币', '1元纸币', '5角硬币', '2角硬币', '1角硬币', '5分硬币', '2分硬币', '1分硬币']
for i in range(len(breakdown)):
if breakdown[i] > 0:
if CURRENCY_DENOMINATIONS[i] >= 100:
print(f"{denominations_names[i]}数量:{breakdown[i]}张")
else:
print(f"{denominations_names[i]}数量:{breakdown[i]}个")
def main():
amount_due, amount_paid = get_user_inputs()
change = amount_paid - amount_due
change_cents = round(change * 100)
breakdown = calculate_change_breakdown(change_cents)
print_results(amount_due, amount_paid, change, breakdown)
if __name__ == "__main__":
main()
CURRENCY_DENOMINATIONS = [5000, 2000, 1000, 500, 200, 100, 50, 20, 10, 1, 5, 2, 1]
def calculate_change_breakdown(change):
breakdown = [0] * len(CURRENCY_DENOMINATIONS)
remaining_change = int(round(change * 100))
for i in range(len(CURRENCY_DENOMINATIONS)):
count = remaining_change // CURRENCY_DENOMINATIONS[i]
breakdown[i] = count
remaining_change = remaining_change - count * CURRENCY_DENOMINATIONS[i]
return breakdown
def print_results(amount_due, amount_paid, change, breakdown):
print(f"需支付的金额:{amount_due:.2f}元")
print(f"实际支付的金额:{amount_paid:.2f}元")
print(f"找零金额为:{change:.2f}元")
currency_names = ["50元纸币", "20元纸币", "10元纸币", "5元纸币", "2元纸币", "1元纸币", "5角硬币", "2角硬币", "1角硬币", "1分硬币"]
for i in range(len(CURRENCY_DENOMINATIONS)):
if CURRENCY_DENOMINATIONS[i] >= 100:
currency_name = currency_names[i]
count = breakdown[i]
if count > 0:
print(f"{currency_name}数量:{count}张")
else:
index = i - len(CURRENCY_DENOMINATIONS)+len(currency_names)
currency_name = currency_names[index]
count = breakdown[i]
if count > 0:
print(f"{currency_name}数量:{count}个")
amount_due = float(input("请输入需支付的金额:"))
amount_paid = float(input("请输入实际支付的金额:"))
change = amount_paid - amount_due
breakdown = calculate_change_breakdown(change)
print_results(amount_due, amount_paid, change, breakdown)