上节课我们一起学习了咱们的for循环结构,这节课咱们来就之前学过的知识做一下习题吧:
1. 主题: Duck, Duck, Goose!
假设你在一个家禽农场工作,需要计算从传送带传下来的动物数量(不要问为什么)。每一只鸭子(duck)价值1点。鹅(geese或者goose)比鸭子更大,所以它们每一只价值2点。鸡蛋(egg或者eggs)会重置你现在的计数变成0。举个栗子,一个序列 [“duck”, “duck”, “goose”]
会计数为4点(每个鸭子1点,一只鹅2点)。[“duck”, “goose”, “egg”, “duck”]
会得到1点(鸡蛋重置前面的所有计数变为0,最后一个鸭子为1点)。
请完成ddg()函数,只有一个参数,为一个字符串为元素的list。每一个字符串都是以下其中之一:“duck”,“goose”,“egg”(全部小写)。这个函数会根据前面所说的规则返回一个非负整数。
以下是你要实现的一些例子:
函数调用命令 | 返回值 |
---|---|
ddg(["goose", "duck", "duck", "duck"]) | 5 |
ddg(["duck", "egg", "goose", "egg"]) | 0 |
ddg(["duck", "duck", "egg", "goose"]) | 2 |
测试代码我们下一题之后一起发。
2. 主题:倒序排列约数
没错,这一次我们有两道题!请写一个factors()函数,传入一个正整数作为参数。这个函数会返回一个list,这个list包含了这个参数的所有约数(包括1和它自己,约数就是一个除数,用参数除以这个约数能够整除),并且这些约数是倒序排列的(从大到小排列)。比如说factors(24)
就会返回一个list:[ 24, 12, 8, 6, 4, 3, 2, 1 ]
。
小提示:list中有一个方法可以让list中的数字倒序排列,和append的调用方法一样,比如一个list的变量名为res,那么res.reverse()
就可以让这个list倒序排列。但是这道题,不使用reverse方法也能实现,你可以用两种方法来完成这道题,很有意思。
以下是你要实现的一些例子:
函数调用命令 | 返回值 |
---|---|
factors(38) | [38, 19, 2, 1] |
factors(128) | [128, 64, 32, 16, 8, 4, 2, 1] |
factors(17) | [17, 1] |
然后以下是本次测验的测试代码,请复制到你的py文件后再写:
def ddg(poultry): # 请把代码写到这里 return None def factors(integer): # 请把代码写到这里 return None # 测试代码 ############### Part 1 Tests ############### print('Testing ddg() for ["goose", "duck", "duck", "duck"]: ' + str(ddg(["goose", "duck", "duck", "duck"]))) print('Testing ddg() for ["duck", "egg", "goose", "egg"]: ' + str(ddg(["duck", "egg", "goose", "egg"]))) print('Testing ddg() for ["duck", "duck", "egg", "goose"]: ' + str(ddg(["duck", "duck", "egg", "goose"]))) ############### Part 2 Tests ############### print('Testing factors() for value = 38: ' + str(factors(38))) print('Testing factors() for value = 128: ' + str(factors(128))) print('Testing factors() for value = 17: ' + str(factors(17)))
本期参考答案:
零基础学python 12 程序不枯燥:for循环结构(课后习题答案)
感谢大家的收看,我们下期再见!
评论