python接力赛算法题

小明跟其他5个人一组一起跑马拉松接力赛,赛道总长度30公里,每人跑一公里,然后下一个人接着跑,循环往复,直到30公里跑完。每个人都有一个运动员编号,6个人的编号分别为1,7、18,24、25,5。出发顺序按这个排列进行,比如小明的编号是25号,排在第五个,所以第5个出发。

规则:除了按顺序循环跑外,每个人都要跑属于自己编号的那一公里,比如小明是第5个出发,按正常循环他应该跑第五公里,但组里有一个编号为5的运动员,第5公里就由这名运动员跑,小明跑第6公里,再接着正常循环,以此类推。

要求输出:(用for或while循环,以及if分支语句求解)
小明最后跑了哪几公里,一共跑了几公里。


num = [1, 7, 18, 24, 25, 5]
# result列表统计哪个号码跑了哪公里
result = []
# 第一个循环先统计出每个人不需要跑属于自己编号的那一公里的情况
for i in range(1, 31):
    while i > 6:
        i = i - 6
    result.append(num[i - 1])
# 对序号按小到大排序
num.sort()
# 将号码对应相同的索引号位置插入上方列表中,得到35个元素的列表(因为1就是第一个所以剔除了这种情况)
for i in num:
    if i != (result.index(i) + 1):
        result.insert(i - 1, i)
    else:
        continue
# 取前30个元素,即30公里的正确排序
result = result[:30]
# 得出元素25即小明所跑的公里的索引号
num_index = [str(i+1) for i, x in enumerate(result) if x == 25]
print('小明跑了第%s公里' % '、'.join(num_index))
print('一共跑了%s公里' % len(num_index))

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,已经为您补发到账户,我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。