2021年9月电子学会青少年软件编程(Python四级)等级考试试卷
操作/编程
四级
2021
2022-10-31 16:26:06
60次
一、编程题
外卖送餐服务越来越受到人们的喜爱,外卖小哥们也成了路上的一道风景。
当顾客使用外卖软件点餐时,会出现一个预计送达时间,包括了餐厅制作食物的时间,路上的骑行时间等等。
一种常用的计算路上骑行时间的方法是用曼哈顿距离(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分钟
【知识点】 电子学会Python四级
乘法运算等于多个加法运算的和。比如,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
【知识点】 电子学会Python四级
在编写抽奖程序时,为了保证一个人只有一次中奖机会,要检查新抽出来的数字是不是已经被抽中过了。
一种办法是将已经中过奖的人员编号存放在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
【知识点】 电子学会Python四级
