python课后练习题(一)

《python核心编程第二版》第五章的一道课后练习题:

5-5 取余。取一个任意小于 1 美元的金额,然后计算可以换成最少多少枚硬币。硬币有 1
美分,5 美分,10 美分,25 美分四种。1 美元等于 100 美分。举例来说,0.76 美元换算结果
应该是 3 枚 25 美分,1 枚 1 美分。类似 76 枚 1 美分,2 枚 25 美分+2 枚 10 美分+1 枚 5 美分+1
枚 1 美分这样的结果都是不符合要求的。

 

自己写的答案(刚开始学习python,写的比较粗糙)

#!/usr/bin/env python
def getmoney():
input=raw_input(‘enter a money num:’)
try:
money=float(input)
except ValueError,e:
print ‘type error:’,e
return getmoney()
else:
if money>=1:
print ‘x<1’
return getmoney()
else:
return int(money*100)

def get25(x):
if x>=25:
num25=x/25
yu25=x%25
return num25,yu25
else:
return 0,x

def get10(x):
if x>=10:
num10=x/10
yu10=x%10
return num10,yu10
else:
return 0,x

def get5(x):
if x>=5:
num5=x/5
yu5=x%5
return num5,yu5
else:
return 0,x

def get1(x):
num1=x
return num1

while True:
ans=raw_input(‘enter or q to quit\n’)
if ans==’q’:
break
else:
x=getmoney()
x=get25(x)
a=x[0]
x=x[1]
x=get10(x)
b=x[0]
x=x[1]
x=get5(x)
c=x[0]
x=x[1]
x=get1(x)
d=x
print ‘’’ 25: %d
10: %d
5: %d
1: %d’’’%(a,b,c,d)

运行结果如下: