鱼C论坛

 找回密码
 立即注册
查看: 1785|回复: 1

[技术交流] 2018年3月7日-兑换纸币转换器

[复制链接]
发表于 2018-3-7 23:38:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
    今天根据书上案例,自己YY了如下场景:
    银行柜台客户取款,银行柜员根据客户需要取款金额,输入系统后,系统告诉柜员根据客户取款数量,应该提供给客户多少纸币;如果输入的货币有角以下的单位,会提示重新输入。
    代码完成了,自己也作了多次试验。能够适应大部分数据。
希望交流内容:
1、好像有时候要扯拐,要报错提示“非内置数据”,但是再输入同类数据,又正常了。报错截图未保存,要是哪位在运行时,哪个数字报错了,麻烦贴上来,共同探讨学习。感谢!
2、代码写的好像有点繁琐,哪位大大如果方便,顺手帮忙简化下,感谢!
    代码如下:
#最少数量货币
print ( "————最少数量货币————" )
#提示用户输入任一数字
amount_currency = eval ( input ( "请输入待转换的货币额度:" ) )
#判定用户是否输入角以下单位,如果是,则提示客户重新输入,如果不是,则向用户展示纸币组合
while int( amount_currency * 100 ) % 10 > 0 :
    print ( "目前我行不支持角票以下兑换,请重新输入!" )
    amount_currency = eval(input("请输入待转换的货币额度:"))
if int( amount_currency * 100 ) % 10 == 0 :
    #转换为100元钞票,整除100
    amount_hundred_RMB = int ( amount_currency // 100 )
    #print ( amount_hundred_RMB , "张一百元大钞" )
    #转换为50元钞票,整除100后余数再除以50
    amount_fifty_RMB = int ( ( int( amount_currency ) % 100 ) // 50 )
    #print ( amount_fifty_RMB , "张五十元钞票" )
    #转换为20元钞票
    #(判定1)如果50元钞票数量大于0,就减去50后,再除以20
    if amount_fifty_RMB > 0 :
        amount_twenty_RMB = int ( ( (int(amount_currency) % 100) - 50 ) // 20 )
        #print(amount_twenty_RMB , "张二十元钞票", "(判定1)")
    #(判定2)如果50元钞票数量小于1,直接除以20
    if amount_fifty_RMB < 1 :
        amount_twenty_RMB = int ( ( ( int(amount_currency) % 100 ) ) // 20 )
        #print ( amount_twenty_RMB , "张二十元钞票" , "(判定2)" )
    #转换为10元钞票
    #(判定1)如果50元钞票大于0,且20元钞票数量大于0,就先减去50,再20乘以钞票数量后,再除以10
    if amount_fifty_RMB > 0 and amount_twenty_RMB > 0 :
        amount_ten_RMB = int ( ((int(amount_currency) % 100) - 50 - 20 * amount_twenty_RMB ) // 10 )
        #print( amount_ten_RMB , "张十元钞票" , "(判定1)" )
    #(判定2)如果50元钞票大于0,且20元钞票数量小于1,就先减去50,再除以10
    if amount_fifty_RMB > 0 and amount_twenty_RMB < 1 :
        amount_ten_RMB = int ( ( ( int(amount_currency) % 100 - 50 ) ) // 10 )
        #print ( amount_ten_RMB , "张十元钞票" , "(判定2)" )
    #(判定3)如果50元钞票小于1,且20元钞票数量大于0,就直接20乘以钞票数量后,再除以10
    if amount_fifty_RMB < 1 and amount_twenty_RMB > 0 :
        amount_ten_RMB = int ( ( ( int(amount_currency) % 100 ) ) // 10 )
        #print ( amount_ten_RMB , "张十元钞票" , "(判定2)" )
    #(判定4)如果50元钞票小于1,且20元钞票数量小于1,就直接除以10
    if amount_fifty_RMB < 1 and amount_twenty_RMB < 1 :
        amount_ten_RMB = int ( ( ( int(amount_currency) % 100 ) ) // 10 )
        #print ( amount_ten_RMB , "张十元钞票" , "(判定3)" )
    #转换为5元和1元钞票,直接除以10取余,就能取到个位数,再整除5
    amount_five_RMB = int ( ( ( int ( amount_currency ) % 10 ) ) // 5 )
    #print( amount_five_RMB , "张五元钞票" )
    #(判定1)如果5元钞票大于0,就减去5,直接取值
    if amount_five_RMB > 0 :
        amount_one_RMB = ( int ( amount_currency ) ) % 10 - 5
        #print( amount_one_RMB, "张一元钞票", "(判定1)")
    #(判定2)如果5元钞票小于1,就直接取值
    if amount_five_RMB < 1 :
        amount_one_RMB = ( int ( amount_currency ) ) % 10
        #print( amount_one_RMB, "张一元钞票", "(判定1)")
    #转换为5角和1角钞票,乘以10,取整,再除以10取余,就能取到小数位后第一位数字,再整除5
    amount_five_jiao_RMB = ( int ( amount_currency * 10 ) ) % 10 // 5
    #print ( amount_five_jiao_RMB , "张五角钞票" )
    #(判定1)如果5角钞票大于0,就减去5,直接取值
    if amount_five_jiao_RMB > 0 :
        amount_one_jiao_RMB = ( int ( amount_currency * 10 ) ) % 10 - 5
        #print( amount_one_jiao_RMB, "张一角钞票", "(判定1)")
    #(判定2)如果5元钞票小于1,就直接取值
    if amount_five_jiao_RMB < 1 :
        amount_one_jiao_RMB = ( int ( amount_currency * 10 ) ) % 10
        #print( amount_one_jiao_RMB, "张一角钞票", "(判定1)")
    #向用户展示最佳纸币组合

    print ( "请稍后..." )
    print ( "用户取款",amount_currency,"元,应向用户提供以下数量纸币:" )
    print ( "                    一百元钞票:",amount_hundred_RMB,"张")
    print ( "                    五十元钞票:",amount_fifty_RMB,"张"  )
    print ( "                    二十元钞票:",amount_twenty_RMB,"张" )
    print ( "                      十元钞票:",amount_ten_RMB,"张" )
    print ( "                      五元钞票:",amount_five_RMB,"张" )
    print ( "                      一元钞票:",amount_one_RMB,"张" )
    print ( "                      五角钞票:",amount_five_jiao_RMB,"张" )
    print ( "                      一角钞票:",amount_one_jiao_RMB,"张" )
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-8 08:41:53 | 显示全部楼层
本帖最后由 shigure_takimi 于 2018-3-8 08:45 编辑
  1. def getMoney():
  2.     money = float(input('请输入取款金额:'))
  3.     yuan = int(money)
  4.     jiao = int(str(money - yuan)[2]) # 角以后金额舍去
  5.     hundred = yuan // 100
  6.     fifty = (yuan%100)//50
  7.     twenty = (yuan%50)//20
  8.     ten = ((yuan%50)%20)//10
  9.     five = (yuan%10)//5
  10.     one = yuan%5
  11.     five_jiao = jiao//5
  12.     one_jiao = jiao%5
  13.     unit = ['一百元','五十元','二十元','十元','五元','一元','五角','一角']
  14.     amount = [hundred, fifty, twenty, ten, five, one, five_jiao, one_jiao]
  15.     print('应提供以下数量纸币:')
  16.     for i in range(8):  # 共八种金额纸币
  17.         if amount[i] != 0:
  18.             print(unit[i], ':', amount[i], '张')
  19.             
  20. getMoney()
复制代码

1.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 07:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表