|
发表于 2019-9-29 22:53:17
|
显示全部楼层
本帖最后由 阴阳神万物主 于 2019-9-29 23:03 编辑
这层楼请删,在没看回复的情况居然发了出来
更新版本,在连续使用函数时,效率相对提高。
- 错误结果缓存 = set()
- def 求解(数):
- 数集 = {数}
- def 替换(旧数):
- 新数 = 0
- while 旧数:
- 新数 += (旧数%10) ** 2
- 旧数 //= 10
- return 新数
- def 已知错误(数):
- return (数 in 错误结果缓存)
-
- if 已知错误(数):
- return False
- 数 = 替换(数)
- while 数 not in 数集: #若出现重复数字当为无限循环
- if 已知错误(数): #使用排除法
- return False
-
- 数集.add(数)
- 数 = 替换(数)
- if 数 == 1: #出现1则返回真,结束函数
- return True
- for 元素 in 数集:
- global 错误结果缓存
- 错误结果缓存.add(元素) #将错误结果放入缓存以提高连续使用的效率
- return False #出现无限循环且没有1,返回假,结束函数
- if __name__ == '__main__':
- print("例1 输出:", 求解(19))
- print("自测(实算得假) 输出:", 求解(233))
复制代码 |
|