为了账号安全,请及时绑定邮箱和手机立即绑定

求解,是要用到Python数组吗?

1.有如下数字:

05 04 03
06 01 02
07 08 09

像这样扩展到最多包含前25个数字:

17 16 15 14 13
18 05 04 03 12
19 06 01 02 11
20 07 08 09 10
21 22 23 24 25

您可能会很容易注意到,第一层(也是最内层01)仅包含一个数字(),第二层-紧邻其周围-包含8个数字(02-09范围内的数字),依此类推。

您的任务是创建一个给定数字的layers(n)函数,该函数返回n在第几层

例子:


正在回答

1 回答

import math

def layers(n):

  n_sqrt = math.ceil(math.sqrt(n))

  if (n_sqrt % 2 == 0):

    n_sqrt = n_sqrt + 1

  layer = (n_sqrt + 1) / 2

  return layer


print layers(88)


1 回复 有任何疑惑可以回复我~
#1

慕仔4072574 提问者

规律是怎么找到的,我思路不行
2019-11-13 回复 有任何疑惑可以回复我~
#2

悠哉悠哉3311454 回复 慕仔4072574 提问者

最里面的最大数是1的平方,第二圈是3的平方,第三圈是5的平方。已知一个数字n,那么他的平方根必然大于里面一层最大数的平方根,小于等于当前层的平方根,对其使用math.ceil方法返回一个偶数或者一个奇数,如果是偶数那么+1,如果是奇数那么这个奇数就是当前层最大数的平方根。知道了当前最大数的平方根,那么(n_sqrt + 1) / 2就是n在第几层。其实代码更好理解。。。
2019-11-15 回复 有任何疑惑可以回复我~
#3

慕后端3470754 回复 悠哉悠哉3311454

怎么运行出错呢? 最后一行出错了
2020-02-20 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

求解,是要用到Python数组吗?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信