大致思路和代码

本人解决这一问题的关键思想是函数的递归调用,递归思想及如何实现大家可以自行百度,大致思路就是从上到小不断逐级调用自身,最终调用到底层,即n为一位数时,然后再逐级向上返回值,逐级加一,最后就可以得到persistentence的值了。

话不多说,放代码:

# -*- coding: utf-8 -*-
"""
codewars Kata: Persistent BuggerCreated on Sun Nov 22 09:58:35 2020@author: Pray
"""def persistence(n):if(len(str(n)) == 1):return 0else:new_n = 1for i in range(len(str(n))):new_n = new_n * int(str(n)[i])return persistence(new_n) + 1

其他解决方案

上面我是用了递归的方法实现了计数的累加,但其实python中的ruduce函数可以使代码变得更加简洁。

reduce函数介绍

描述

reduce() 函数会对参数序列中元素进行累积。

函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

语法

reduce(function, iterable[, initializer])

参数

function -- 函数,有两个参数
iterable -- 可迭代对象
initializer -- 可选,初始参数

返回值

返回函数计算结果。

示例

>>>def add(x, y) :            # 两数相加
...     return x + y
...
>>> reduce(add, [1,2,3,4,5])   # 计算列表和:1+2+3+4+5
15
>>> reduce(lambda x, y: x+y, [1,2,3,4,5])  # 使用 lambda 匿名函数
15

利用ruduce函数解决该问题

直接上代码:

import operator
from functools import reduce
def persistence(n):i = 0while n>=10:n=reduce(operator.mul,[int(x) for x in str(n)],1)i+=1return i

注意这里有个问题,在python3版本中,直接使用reduce()的话,系统会报错,提示不存在reduce()函数。

这是因为在Python 3里,reduce() 函数已经被从全局名字空间里移除了,它现在被放置在fucntools 模块里。使用前需要先import,即:

from functools import reduce

codewars Kata——Persistent Bugger问题相关推荐

  1. codewars028: Persistent Bugger

    2019独角兽企业重金招聘Python工程师标准>>> https://www.codewars.com/kata/55bf01e5a717a0d57e0000ec/train/ja ...

  2. 6kyu Persistent Bugger

    题目: Write a function, persistence, that takes in a positive parameter num and returns its multiplica ...

  3. javascript每日习题

    之前发现了一个习题网站codewars,与leetcode类似,但又有点区别,leetcode完全是算法相关,但是这个网站的习题大部分考的是对js内置函数的使用,用来巩固js的知识,我觉得挺好的. 这 ...

  4. codewars??? Is my friend cheating?

    2019独角兽企业重金招聘Python工程师标准>>> https://www.codewars.com/kata/5547cc7dcad755e480000004/train/ja ...

  5. [codewars] - int32 to IPv4 二进制十进制 ip地址转换

    原题 https://www.codewars.com/kata/int32-to-ipv4/train/java Take the following IPv4 address: 128.32.10 ...

  6. 【KATA练习日记】关于std::accumulate的使用

    前言 今天的练习是6段难度的题目-> Find the odd int | Codewars Given an array of integers, find the one that appe ...

  7. csharp高级练习题:Codewars风格排名系统【难度:4级】--景越C#经典编程题库,不同难度C#练习题,适合自学C#的新手进阶训练

    csharp高级练习题:Codewars风格排名系统[难度:4级]: 写一类称为用户被用来计算用户将通过一个类似于Codewars用途排名系统进展的量. 商业规则: 用户开始于秩-8,可以进步一路8. ...

  8. 【Codewars】Simple Pig Latin

    Codewars里的 5kyu Kata. 题目说明: Move the first letter of each word to the end of it, then add "ay&q ...

  9. 【Codewars python 4kyu】: Breadcrumb Generator

    问题描述: As breadcrumb menùs are quite popular today, I won't digress much on explaining them, leaving ...

  10. csharp高级练习题:约翰和安报名参加Codewars【难度:3级】--景越C#经典编程题库,不同难度C#练习题,适合自学C#的新手进阶训练

    csharp高级练习题:约翰和安报名参加Codewars[难度:3级]: 约翰和他的妻子安已经决定去Codewars. 在第一天安会做一个习题和约翰 - 他想知道它是如何工作 - 0习题. 让我们叫A ...

最新文章

  1. Nat. Mach. Intel. | 突变后蛋白蛋白结合力的拓扑网络树预测模型
  2. 【 FPGA 】MATLAB 生成 FIR 滤波器的操作步骤(包括生成Verilog HDL代码以及仿真过程)
  3. 微软Excel竟能实现CV算法:亚马逊工程师妙用,人脸检测、字符识别都不在话下...
  4. Ring3挂起进程,跟恢复进程.
  5. 简单图库软件的实现(联网下载图片保存到sdcard在Listview中展示,并作为ContentProvider为其他软件提供图库数据)
  6. zigbee定位_基于RFID室内定位技术的解决方案,能满足高精度室内定位吗?
  7. Bootstrap的下拉列表点击没有用
  8. SpreadJS使用小结
  9. keepass使用坚果云同步
  10. 奥城大学计算机科学专业,我是学工程专业本科毕业,托福70分,GRE1020分,都很低,我想去美国留学马上走,...
  11. React18正式版发布,未来发展趋势是?
  12. UE4超过20万个动画角色的优化实战
  13. 关于推进海洋测绘工作的思考
  14. check the manual that corresponds to your MySQL server version for the right
  15. 一文汇总新三板所有问题
  16. Javascript异常(exception)处理机制详解 JS、异常Error属性
  17. spring boot网上购物系统毕业设计源码311236
  18. unity打靶游戏的制作
  19. POJO、Java Bean是如何定义的
  20. 为何用户体验无法被设计,如何为用户体验设计

热门文章

  1. 泰拉瑞亚服务器怎么修改密码,泰拉瑞亚账号系统功能使用说明 怎么绑定手机号...
  2. DSP28335 eCAP 测频
  3. 【zznu-2173】
  4. 【线代】齐次方程组的解
  5. ROS三轮全向轮移动底盘 (01)
  6. 机器人java指南_Zmud新手机器人指南
  7. JSAAS的Activiti会签开发扩展处理
  8. ireport分页后最后多一页空白页
  9. 很好用的搜网盘资源工具。很多都能找到
  10. Excel中文转拼音