万卷网> 电子学会考级 >Python等级考试 > 2021年9月电子学会青少年软件编程(Python四级)等级考试试卷

2021年9月电子学会青少年软件编程(Python四级)等级考试试卷
操作/编程 四级 2021 2022-10-31 16:26:06 60

一、编程题

1.

外卖送餐服务越来越受到人们的喜爱,外卖小哥们也成了路上的一道风景。

当顾客使用外卖软件点餐时,会出现一个预计送达时间,包括了餐厅制作食物的时间,路上的骑行时间等等。

一种常用的计算路上骑行时间的方法是用曼哈顿距离(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分钟

2.

乘法运算等于多个加法运算的和。比如,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

3.

在编写抽奖程序时,为了保证一个人只有一次中奖机会,要检查新抽出来的数字是不是已经被抽中过了。

一种办法是将已经中过奖的人员编号存放在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

公众号
客服 反馈
顶部