在编写抽奖程序时,为了保证一个人只有一次中奖机会,要检查新抽出来的数字是不是已经被抽中过了。 一种办法是将已经中过奖的人员编号存放在test_list里面,然后每抽出一个新的人员编号,判断它是否在中奖人员列表中。 如果没有在中奖人员列表中,说明中奖号码有效,并将它保存进中奖人员列表;如果已经在里面了,就再生成一个新的人员编号。 请你补全下面的代码,实现判断一个数字是否在列表中的功能。 #子问题算法(子问题规模为1) def is_in_list(init_list,num): if init_list[0] == num: return True else: return False #分治法 def find_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 res if __name__ == “__main__”: #测试数据 test_list = [18,43,21,3,28,2,46,25,32,40,14,36] #查找 print(_____④_____) 程序运行结果: >>>True
点击检查查看答案
正确
不正确
题 8 of 9
8. 题
8:
乘法运算等于多个加法运算的和。比如,3×2可以理解为3+3,也可以理解为2+2+2 。 下面的程序使用递归算法演示了计算两个自然数的乘积的过程。请你补全代码。 输入:分两次输入自然数num1,num2 输出:num1 × num2 = 乘积 def cheng_fa(num1,num2,value): if ① value += 0 else: value += num1 ② value = cheng_fa(num1,num2,value) return ③ num1=int(input(‘输入第1个数:’)) num2=int(input(‘输入第2个数:’)) value=0 value = cheng_fa(num1,num2,value) print(‘{} X {} = {}’.format(num1,num2,value)) 程序运行结果: 输入第1个数:3 输入第2个数:7 3 X 7 = 21
点击检查查看答案
正确
不正确
题 9 of 9
9. 题
9:
外卖送餐服务越来越受到人们的喜爱,外卖小哥们也成了路上的一道风景。 当顾客使用外卖软件点餐时,会出现一个预计送达时间,包括了餐厅制作食物的时间,路上的骑行时间等等。 一种常用的计算路上骑行时间的方法是用曼哈顿距离(manhatton distance)除以平均骑行速度。平面上点A(x1,y1)与点B(x2,y2)的曼哈顿距离为:|x1-x2|+|y1-y2|。 假设一名外卖小哥的平均骑行速度为30km/h。下面的程序模拟计算外卖小哥的路上骑行时间,请你补充完整。 输入:分两次输入A点和B点的坐标值 输出:A、B两点间的曼哈顿距离和路上骑行时间。 #求绝对值 def my_abs(n): if ① return n else: return ② #主程序 v=30 #平均骑行速度 x1=float(input(‘输入A点的x坐标(米):’)) y1=float(input(‘输入A点的y坐标(米):’)) x2=float(input(‘输入B点的x坐标(米):’)) y2=float(input(‘输入B点的y坐标(米):’)) #计算曼哈顿距离mht mht = ③ #计算路上骑行时间 time_on_the_road = ④ print(‘A、B两点的曼哈顿距离为{}米’.format(mht)) print(‘预计路上骑行时间需要{}分钟’.format(time_on_the_road)) 程序运行结果: 输入A点的坐标(米),以逗号分隔:-1000,1000 输入B点的坐标(米),以逗号分隔:1000,-1000 A、B两点的曼哈顿距离为4000米 预计路上骑行时间需要8.0分钟