新教材习题解析之python自定义函数(2)
Python算法之旅
共 3256字,需浏览 7分钟
·
2021-08-18 12:45
说在前面
受《新时代领航技术同步用书》编委会的邀请,我也尝试着编制了一些题目,尽可能按照新课标的要求,力求能够激发学生思考和考查学生的计算思维。
上次已经和大家分享了2道以公民身份证号码为背景的题目,试图从设计自定义函数的角度,帮助学生初步掌握模块化编程的方法。由于自定义函数是编程教学的重、难点,必须多加练习才能掌握,所以今天继续和大家分享2道相同类型的题目。
由于新教材是块新大陆,我们都是在摸索前行,加之本人水平有限,在描述题目用语和控制题目难度方面都存在不足,敬请大家批评指正。
def get_score2(ans):
s, i, n = 0, 0, len(ans)
while i < n:
while i < n and ans[i] == 'F':
i += 1
p = i #记录当前'T'子串的起始位置
while i < n and ans[i] == 'T':
i += 1
s += (i - p) * (i - p + 1) // 2
return s
算法2:为字符串增加一个结束符,可以进一步提高程序效率。
def get_score3(ans):
ans += '.' #为字符串增加一个结束符
s, i = 0, 0
while ans[i] != '.':
while ans[i] == 'F':#跳过'F'子串
i += 1
p = i #记录当前'T'子串的起始位置
while ans[i] == 'T':
i += 1
s += (i - p) * (i - p + 1) / 2
return s
例如下面的列表生成式就可以很方便的生成一个长度为10的随机数序列,其元素值为[1, 10]区间的随机整数:a = [random.randint(1,10) for i in range(10)]
可是,这样的一个随机数列表中的元素值常常会出现重复。现在我们需要提高难度,要求生成一个长度为n的列表,其元素值为[a, b]区间的不重复的随机整数。
请根据以下对自定义函数特征的描述,写出完整代码,实现函数功能。
提示:可充分使用random模块中各种生成随机数的方法,争取写出3-4种不同的算法。
需要本文word版和拓展思考答案的,可以加入“Python算法之旅”知识星球参与讨论和下载文件,“Python算法之旅”知识星球汇集了数量众多的同好,更多有趣的话题在这里讨论,更多有用的资料在这里分享。
我们专注Python算法,感兴趣就一起来!
相关优秀文章:
字符串专题之中文大写金额数字转换工具
新教材习题解析之python循环结构
新教材习题解析之python循环结构(2)
新教材习题解析之python自定义函数
评论