鱼C论坛

 找回密码
 立即注册
楼主: zltzlt

[技术交流] Python:每日一题 249(答题有奖)

[复制链接]
发表于 2019-9-28 16:44:08 | 显示全部楼层
二十五岁青春 发表于 2019-9-28 09:55
很奇怪的是,你怎么知道他会循环,万一是不循环然后就是随机生成其他还是不等于1大的数字了

因为数学,不得到1一定会出现循环,被证明了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-28 16:44:43 | 显示全部楼层
本帖最后由 永恒的蓝色梦想 于 2019-9-30 20:47 编辑
  1. def function(num):
  2.         aset={num}
  3.         while num not in aset:
  4.                 aset.add(num)
  5.                 num=sum((int(_)**2 for _ in str(num)))
  6.                 if num==1:return True
  7.         return False
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-28 16:47:26 | 显示全部楼层
angtn 发表于 2019-9-28 11:18
额,额感觉好难啊,这样写不知道对不对?

这题算是很简单的了……多练习吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-28 21:20:00 | 显示全部楼层
鹅鹅、、
  1. def fun(num):
  2.     total = [num]
  3.     while True:
  4.         for each in str(num):
  5.             num += int(each)**2
  6.         if num == 1:
  7.             return True
  8.         if num in total:
  9.             return False
  10.         total.append(num)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-28 22:59:53 | 显示全部楼层
  1. num = int(input("请输入一个数:"))
  2. count = 0
  3. bian = ""
  4. yuan = num
  5. feng = 100000

  6. def mi(che):
  7.     return che ** 2

  8. while True:
  9.     tex = str(num)
  10.     urber = [each for each in tex]
  11.     zhuan = sum([mi(int(each)) for each in urber])
  12.     for each in range(len(urber) - 1):
  13.         bian += urber[each] + " ** 2 + "
  14.     bian += urber[-1] + " ** 2 = {}\n         ".format(zhuan)
  15.     if zhuan == 1 or count == feng:
  16.         break
  17.     num = zhuan
  18.     count += 1
  19. if count == feng:
  20.     print("很遗憾!\n{}不是'快乐数~~'".format(yuan))
  21. else:
  22.     print("恭喜您找到了一位'快乐数'~~\n下面是过程:\n\n" + bian)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-29 08:21:48 | 显示全部楼层
本帖最后由 zhou995287902 于 2019-9-29 08:40 编辑

1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-9-29 10:01:42 | 显示全部楼层
  1. def happynumber(num):
  2.     list1 = []
  3.     list1.append(num)
  4.     num2 = 0
  5.     while int(num) != 1:
  6.         for each in str(num):
  7.             num2 += int(each) ** 2
  8.         num = num2
  9.         num2 = 0
  10.         if num in list1 :
  11.             return False
  12.         else:
  13.             list1.append(num)
  14.     return True

  15. num = int(input('请输入一个数字判断是不是快乐数:'))
  16. print(happynumber(num))
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 贡献 +1 收起 理由
zltzlt + 1 + 1 + 1

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-29 10:02:42 | 显示全部楼层

发现自己写的好长好冗余
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-29 19:55:52 | 显示全部楼层
本帖最后由 丿小凯 于 2019-9-29 20:09 编辑

import time
a = int(input('请输入一个任意长度的整数: '))
time1 = time.time()
while 1:
    b = []
    while a:
        c = a%10
        a//=10
        b.append(c)
    d=0
    for i in b:
        d=d+i**2
    if d==1:
        print('是快乐数!')
        break
    else:
        time2 = time.time()
        if time2-time1 > 5:
            print ('不是快乐数')
            break
        a=d
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-29 20:37:19 | 显示全部楼层
angtn 发表于 2019-9-28 11:18
额,额感觉好难啊,这样写不知道对不对?

恭喜通过!

执行用时:48 ms
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-29 20:37:59 | 显示全部楼层

恭喜通过!

执行用时:60 ms
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-29 20:39:21 | 显示全部楼层

恭喜通过!

执行用时:60 ms
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-29 20:40:45 | 显示全部楼层


解答错误

输入:19
输出:False
预期结果:True
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-29 20:41:26 | 显示全部楼层

输入 19 超时
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-29 20:41:35 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-29 20:42:03 | 显示全部楼层

恭喜通过!

执行用时:52 ms
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-29 20:42:44 | 显示全部楼层

解答错误

输入:1
输出:False
预期结果:True
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-29 20:43:37 | 显示全部楼层
丿小凯 发表于 2019-9-29 19:55
import time
a = int(input('请输入一个任意长度的整数: '))
time1 = time.time()

解答错误

输入:19
输出:False
预期结果:True
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-29 22:28:36 | 显示全部楼层
  1. def func(num):
  2.           num = str(num)
  3.           total = [num]
  4.           while True:
  5.                     a = 0
  6.                     for each in str(num):
  7.                               a += int(each)**2
  8.                     num = a
  9.                     if num == 1:
  10.                               return True
  11.                     if num in total:
  12.                               return False
  13.                     total.append(num)
  14. print(func(2))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-29 22:30:54 | 显示全部楼层

恭喜通过!

执行用时:56 ms
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-26 04:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表