旨在为小朋友们提供全面的学习材料,共同为等级考试做好准备。
添加小助手微信,回复【CIE四级2021.09_第36题】,获取本题源代码。
在编写抽奖程序时,为了保证一个人只有一次中奖机会,要检查新抽出来的数字是不是已经被抽中过了。
一种办法是将已经中过奖的人员编号存放在test_list里面,然后每抽出一个新的人员编号,判断它是否在中奖人员列表中。
如果没有在中奖人员列表中,说明中奖号码有效,并将它保存进中奖人员列表;如果已经在里面了,就再生成一个新的人员编号。
请你补全下面的代码,实现判断一个数字是否在列表中的功能。
# 子问题算法(子问题规模为1)defis_in_list(init_list, num):if init_list[0] == num:returnTrueelse:returnFalse# 分治法deffind_out(init_list, num): n = len(init_list)if _____①_____ # 如果问题的规模等于1,直接解决return is_in_list(init_list, num)# 分解(子问题规模为n/2) left_list, right_list = _____②_____# 递归(树),分治,合并 res = find_out(left_list, num) _____③_____ find_out(right_list, num)return resif __name__ == "__main__":# 测试数据 test_list = [18, 43, 21, 3, 28, 2, 46, 25, 32, 40, 14, 36]# 查找 print(_____④_____) # True参考答案:
① n==1:或其他正确答案
② init_list[:n//2],init_list[n//2:]或其他正确答案
③ or或其他正确答案
④ find_out(test_list,25) 或其他正确答案
青少年编程竞赛交流
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),添加小助手微信,让他邀请大家进入学习群。进群之后大家可以参与定期组织的21天刷题打卡、等级考试测评、教育部白名单比赛辅导以及青少年编程组队竞赛等活动。
