|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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,"张" ) |
|