零基础学python 12 程序不枯燥:for循环结构(课后习题)

avatar 2017年4月19日20:29:59 评论 2,295

加入VIP,可以享受无广告视频播放!更可享受教程提前看!详情猛戳:VIP介绍

上节课我们一起学习了咱们的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循环结构(课后习题答案)

 

 

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

avatar

发表评论

您必须才能发表评论!