A48754. 外卖送餐服务越来越受到人们的喜爱, 外卖小哥们也成了路上的一道风景。当顾客使用外卖软件点餐时, 会出现一个预计送达时间, 包括了餐厅制作食物的时间,路上的骑行时间等等。一种常用的计算路上骑行时间的方法是用曼哈顿距离( manhatton distance )除以平均骑行速度。 平面上点 A(x1,y1)与点 B(x2,y2)的曼哈顿距离为: |x1-x2|+|y1-y2|。假设一名外卖小哥的平均…
题目描述
外卖送餐服务越来越受到人们的喜爱, 外卖小哥们也成了路上的一道风景。
当顾客使用外卖软件点餐时, 会出现一个预计送达时间, 包括了餐厅制作食物的时间,
路上的骑行时间等等。
一种常用的计算路上骑行时间的方法是用曼哈顿距离( 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 分钟
参考答案
#求绝对值
def my_abs(n):
if n>0:
return n
else:
return -n
#主程序
v=30 #平均骑行速度
x1,y1=eval(input('输入 A 点的坐标(米), 以逗号分隔: '))
x2,y2=eval(input('输入 B 点的坐标(米), 以逗号分隔: '))
#计算曼哈顿距离 mht
mht = my_abs(x1-x2)+my_abs(y1-y2)
#方法 1
mht=my_abs(y1-y2)+my_abs(x1-x2)
#方法 2
mhtsum([my_abs(x1-x2),my_abs(y1-y2)])
#方法 3
mht==sum((my_abs(x1-x2),my_abs(y1-y2)))
#方法 4
#计算路上骑行时间
time_on_the_road = mht/1000/v*60 #方法 1
time_on_the_road = mht/(1000*v)*60 #方法 2
time_on_the_road = mht*60/1000/v #方法 3
time_on_the_road = (mht*60)/(1000*v) #方法 4
print('A、 B 两点的曼哈顿距离为{}米'.format(mht))
print('预计路上骑行时间需要{}分钟'.format(time_on_the_road))