Python--数学运算--金融应用程序

前言

这是我在学习Python过程中练习数学运算的一段小程序,尽管看起来很简单,但是编程就是要动手,光看明白是不足够的,脚踏实地一步一步实操才能接近一名开发者或者计算机工程工作者的目标,共勉。

题目

用户输入总金额,分别以美元、美分为单位进行对比两种情况结果差异,然后输出一个报告,罗列出等价的货币:美元、两角五分硬币、一角硬币、五分硬币和美分的个数。

解题思路

1、提示用户选择美元还是美分为单位输入金额
2、转换对应金额为以美分为单位
3、将金额除以100得到美元数,求余得到剩余美分数
4、将剩余美分数除以25得到两角五分硬币个数,求余得到剩余美分数
5、将剩余美分数除以10得到一角硬币个数,求余得到剩余美分个数
6、将剩余美分数除以5得到五分硬币个数,求余得到剩余美分个数,即最终零散美分数
7、返回报告显示结果

source-code1
#!/usr/local/bin/python
# encoding: utf-8
'''
test -- python开发学习 -- ex3.8,金融应用

@author:     Eric

@copyright:  2017 organization_name. All rights reserved.

@contact:    xj_lin@protonmail.com
'''
def choose():
    choice = input("Choose the monetary unit between 'dollar' and 'cent'.\n")
    return choice

def currency_change():
    choice = choose()
    if choice == "dollar":
        total_num_d = eval(input("Please input the total number in dollars:"))
        #convert amount to cents
        total_num = int(total_num_d * 100)#可能存在精度损失问题,eg:10.03 * 100 = 1003.9999 9999 9999 9
    else:
        total_num = eval(input("Please input the total number in cents:"))
    #calculate the number of one dollars
    dollars_num = total_num // 100
    remain_num = total_num % 100
    #calculate the number of quarters in the remaining amount
    quarters_num = remain_num // 25
    remain_num = remain_num % 25
    #calculate the number of dimes in the remaining amount
    dimes_num = remain_num // 10
    remain_num = remain_num % 10
    #calculate the number of nickels in the remianing amount
    nickels_num = remain_num // 5
    remain_num = remain_num % 5
    #the remainder pennies number
    pennies_num = remain_num
    #report
    if choice == "dollar":
        print('Your amount',total_num_d,'consists of:\n\t',dollars_num,'dollars\n\t',quarters_num,'quarters\n\t',dimes_num,'dimes\n\t',nickels_num,'nickels\n\t',pennies_num,'pennies')
    else:
        print('Your amount',total_num,'consists of:\n\t',dollars_num,'dollars\n\t',quarters_num,'quarters\n\t',dimes_num,'dimes\n\t',nickels_num,'nickels\n\t',pennies_num,'pennies')

if __name__ == "__main__":
    report = currency_change()
小结

上述代码包含两种情况,即解题思路中提及的单位区分情况,而程序中的所有选择分支也是围绕两种思路进行运行的,选择对应的单位情况便能得到对应的报告结果。
本文区分两种情况便是在python数学运算中存在float乘法运算再转为int类型时存在精度的损失,读者不妨自己尝试,代码注释部分有举例。
本文的基本货币单位数量展示是采用贪心算法的思想,每一步取出最大数目的对应货币单位金额,直至达到最小货币单位。
程序使用:eval,input和print这三个基本函数,转义字符\t和\n,其中注意在不同OS平台换行符会有差异,若是Windows平台上是使用\r\n

- - - - - - - - - - - - - - - - - - - - - - - - -
参考学习:

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值