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
运行成功干杯
本文由 mdnice 多平台发布