c

codeye

V1

2022/10/07阅读:25主题:默认主题

取余和取整

John还是个孩子时,他已经有五个手指(一只手)。那时候,他经常用手指来数数字。他是这样数的。 a - Thumb b - Index finger c - Middle finger d - Ring finger e - Little finger

a - 拇指 b - 食指 c - 中指 d - 无名指 e - 小指

那么问题来了:当约翰数到数字n时,哪个是对应的手指?

任务 完成接受一个整数的函数,并返回计数结束的手指的名称。"拇指"、"食指"、"中指"、"无名指 "或 "小指"。

两种思路 1、左右手对照看

右手的顺序恰好符合要求

def which_finger(n):
    left = {1:'Thumb finger',
            2:'Index finger',
            3:'Middle finger',
            4:'Ring finger',
            5:'Little finger'
           }

    right = dict(zip(list(left.keys()),
                list(left.values())[::-1]))

    if n <= 5:
        return left[n]
    else:
        lr,f = divmod(n-5,4)
        hands = [right,left]
        return hands[lr%2][1+f]

2nd 思路更简洁

a = ("Index finger""Thumb"
      "Index finger""Middle finger"
      "Ring finger",  "Little finger",
      "Ring finger""Middle finger")

def which_finger(n):
    return a[n % 8]

思考为何解法2nd如此简洁?

任务二 描述

无数个架子错落有致地排列在一起。 根据图示,猫可以同时跳到3个架子上:从架子1跳到架子2或4(猫不能爬到头顶正上方的架子上)。

输入 架子的起始和结束数字(总是正整数,结束不小于起始数)。

任务 找到从起点到终点的最小跳数。

例子 开始1,结束5,那么答案是2(1=>4=>5或1=>2=>5)。

算法

def solution(start, finish):
    step,rest = divmod(finish-start,3)
    return step + rest

运行成功干杯

分类:

后端

标签:

后端

作者介绍

c
codeye
V1