零基础学python 7 深入函数:指向函数,返回函数,空函数(课后习题答案)

avatar 2017年3月29日10:28:30 评论 1,335

今天听说国足中国队打不过伊朗队输啦,有点可惜,不过大家已经很努力了,希望中国队能有更好的成绩!

既然输了,都知道“失败是成功之母”嘛,那咱们好好努力学习编程吧!

上节课咱们的题目是这样的:

1. 钱钱钱
话说在1961年前,住在英国的人呢需要处理非常复杂的货币换算,那时候英国的货币体系包括英镑,先令,便士,法新和其他。很复杂对吧?
这就是咱们今天的主题。
各个货币的换算情况如下:

  • 1 英镑 = 20 先令
  • 1 先令 = 12 便士
  • 1 便士 = 4 法新

请写一个叫做money的函数,只需要传入一个参数,一个以法新为计量的整数,然后计算出这个法新可以换算成多少的英镑,先令,便士以及法新,每一种货币单位请以最小的整数来表示。请最后返回一个剩下的法新的整数,记得使用return哦~
比如,如果传入的参数为2563法新,那么通过这个函数就可以计算出用最小的数字来表示这个货币的结果为:
2563 法新 = 2 英镑 + 13 先令 + 4 便士 + 3 法新
提示: 使用 % 可以计算两数相除之后得到的余数哦,比如5 % 2 = 1, 使用 // 可以计算两数相除得到的整数的部分,比如5 // 2 = 2。
那么最后返回的结果就是:3

下面是一些例子:

函数调用命令 返回值
money(2563) 3
money(4900) 0
money(762) 2

如何解决这个问题呢?

首先我们要计算出1英镑,1先令,1便士对应的法新数是多少,方便我们之后求余数:


# 计算1英镑,1先令,1便士对应的法新数
pounds = 20 * 12 * 4
shilling = 12 * 4
pence = 4

然后使用求余数的方法,求取减去了最小整数倍的货币单位之后剩下的法新数。

为什么要这么求呢?举个例子:

比如我们的第一问参数为2563,计算出pounds = 20 * 12 * 4 = 960,那么:

960 * 1 = 960 < 2563

960 * 2 = 1920 < 2563

960 * 3 = 2880 > 2563

按题目要求,对于英磅数来说最小的整数为2。

然后我们从2563中减去1920得到剩下的643法新来做其他货币单位的运算。方法是一样的。

而咱们使用 2563 % 960 就可以得到643的结果哦,因为它是余数。

咱们的之后的代码也是这样的思路,一步步最后求出剩下的法新数的。

有些同学会问,题目的提示不是有地板除的提示吗?怎么没用到。实际上这道题咱们可以不用上地板除就可以解决,地板除有什么作用呢?如果题目要你返回对应的英镑,先令,便士的数量是多少,它就派上用场了。比如 2563 // 960 就会得到2,而2就是咱们对应的最小英镑数量!很神奇吧!用好地板除和求余数两个符号,在今后很多题目的场合都很有用的。

以下是咱们的答案代码:


def money(farthings):
    # 请把你的代码写到这里来哦
    # 计算1英镑,1先令,1便士对应的法新数
    pounds = 20 * 12 * 4
    shilling = 12 * 4
    pence = 4
    # 计算去除最小的整数对应的货币单位之后剩下的法新数
    remain = farthings % pounds
    remain = remain % shilling
    remain = remain % pence
    return remain

# 测试代码
print('Testing money(farthings) for 2563: ' + str(money(2563)))
print('Testing money(farthings) for 4900: ' + str(money(4900)))
print('Testing money(farthings) for 762: ' + str(money(762)))

 

本课还有配套的视频详细讲解哦~~~

在线观看:

 

高清源文件下载:

链接:http://pan.baidu.com/s/1boC2jiZ 密码:42w2

 

感谢大家的收看,我们下节课再见!

avatar

发表评论

您必须才能发表评论!