鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: 冬雪雪冬

[技术交流] Python:每日一题 218

[复制链接]
发表于 2018-12-12 10:15:09 | 显示全部楼层
我发现位数之和为特定的数都符合条件。
  1. def fun218_1(num):
  2.     l = len(str(num))
  3.     num1 = str(num) if l<=3 else str(num)[l-3:]
  4.     result = 0
  5.     for i in num1:
  6.         result = result + int(i)**3
  7.     return result

  8. def fun218():
  9.     listnum = []
  10.    
  11.     for i in range(100,1000):
  12.         count = 0
  13.         templist = []
  14.         temp = i
  15.         temp = fun218_1(temp)
  16.         templist.append(temp)
  17.         while(count<100*100):
  18.             temp = fun218_1(temp)
  19.             #print(temp)
  20.             if(temp!=templist[-1]):
  21.                 if(temp in templist):
  22.                     break
  23.                 else:
  24.                     templist.append(temp)
  25.                     count = count + 1
  26.             else:
  27.                 listnum.append(i)
  28.                 break

  29.     return listnum

  30. l = fun218()
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-13 13:07:40 | 显示全部楼层
for each in range(100,1000):
    ge = each%10
    shi = int(each%100/10)
    bai = int(each/100)
    sum = ge**3+shi**3+bai**3
    if(sum == X):
        print(sum,end =" ")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-13 14:50:02 | 显示全部楼层
def nar(each):
   num=each
   count=0
   while count<100:
      count+=1
   
      narcissus=((num%1000)//100)**3+((num%100)//10)**3+(num%10)**3
      temp=((narcissus%1000)//100)**3+((narcissus%100)//10)**3+(narcissus%10)**3
     
      if narcissus==temp:
         return True
      else:
         num=temp
      

for each in range(100,1000):
   if nar(each):
      print(each)

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-13 16:44:55 | 显示全部楼层
import math as m
def fun218(now,previous = ''):
    length = len(now)
    if length>=3:
        now = str(int(m.pow(int(now[-3]),3)+ m.pow(int(now[-2]),3) + m.pow(int(now[-1]),3)))
    elif length==2:
        now = str(int(m.pow(int(now[-2]),3) + m.pow(int(now[-1]),3)))
    elif length ==1:
        now = str(int(m.pow(int(now[-1]),3)))
    print(str(now))
    if previous == now and length == 3:
        return previous
    else:
        return fun218(now,now)

点评

输入'100’无限递归  发表于 2018-12-16 20:39
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-14 15:57:49 | 显示全部楼层
  1. def Answer(num):
  2.     num -=  num//1000 * 1000
  3.     a = num //100
  4.     b = (num - 100*a) // 10
  5.     c = num - 100*a - 10*b
  6. #     return (a ,b ,c)
  7.     return a**3 + b**3 + c**3

  8. def isAnswer(num):
  9.     if num == Answer(num):
  10.         return True
  11. #         num = Answer(num)
  12.     return isAnswer(Answer(num))

  13. list_answer = list()
  14. for i in range(100,1000):
  15.     try:
  16.         isAnswer(i)
  17.     except RecursionError:
  18.         pass
  19.     else:
  20.         list_answer.append(i)

  21. print(list_answer)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-14 21:35:11 | 显示全部楼层
def func218():
        n = 101
        while 999 > n > 100:
                sum = 0
                for i in str(n):           ##将数字转换为字符串遍历从而取每个位位数
                        sum = sum + int(i)**3
                if sum == n:
                        print(n)
                n = n+1

func218()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-15 11:38:44 | 显示全部楼层
  1. def fun218(n):
  2.     a = (n//100)%10
  3.     b = (n//10)%10
  4.     c = n%10
  5.     return a**3 + b**3 + c**3

  6. if __name__ == '__main__':
  7.     for i in range(100,1000):
  8.         temp = fun218(i)
  9.         for j in range(0,20):
  10.             if temp == 371:
  11.                 print(i,end=' ')
  12.                 break
  13.             else:
  14.                 temp = fun218(temp)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-15 16:22:29 | 显示全部楼层
本帖最后由 stonejianbu 于 2018-12-15 16:26 编辑

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-15 16:24:25 | 显示全部楼层
  1. def fun218(num):
  2.     # 输入的数字转化字符串,遍历生成列表元素
  3.     # 添加[0,0],保证生成列表的元素不少于3个,统一利用索引计算结果
  4.     g_list = [0,0] + [int(i) for i in str(num)]
  5.     count = 0
  6.     while True:
  7.         # 计算-->重新赋值-->计算...满足条件结束循环/达到设定循环次数结束循环
  8.         new_num = g_list[-3]**3 + g_list[-2]**3 + g_list[-1]**3
  9.         g_list = [0, 0] + [int(i) for i in str(new_num)]

  10.         # 满足水仙花数的条件,满足则结束循环
  11.         if g_list[-3]**3 + g_list[-2]**3 + g_list[-1]**3 == g_list[-3]*100 + g_list[-2]*10 + g_list[-1]:
  12.             break

  13.         # 循环计算50次后(可设置更多计算次数)
  14.         # 经观察结果,50次计算后不符合条件是由于段循环改变,此情况为不符合条件
  15.         count += 1
  16.         if count == 50:
  17.             print('***不符合条件的数字是:',num)
  18.             return
  19.     print('>>>符合条件的数字:',num)

  20. for i in range(100,1000):
  21.     fun218(i)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-16 22:32:58 | 显示全部楼层
fan1993423 发表于 2018-12-10 22:03
看大佬的代码吧,我写的不好

100一直循环下去是1,1确实不会变,但题目要求的是最后数字是像水仙花数一样不在变化,显示1不是水仙花数,有1的反而才是错的@冬雪雪冬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-16 22:37:34 | 显示全部楼层
fan1993423 发表于 2018-12-16 22:32
100一直循环下去是1,1确实不会变,但题目要求的是最后数字是像水仙花数一样不在变化,显示1不是水仙花数 ...

说的是“像水仙花数一样不在变化”,这里是拿水仙花数作为例子
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-16 22:42:58 | 显示全部楼层
冬雪雪冬 发表于 2018-12-16 22:37
说的是“像水仙花数一样不在变化”,这里是拿水仙花数作为例子

我认真读了下题,题目一开始强调水仙花数,我认为出这个题的意思指的就是一个三位数经过这种方法的变化,最后变成水仙花数后,不再发生变化
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-16 22:55:26 | 显示全部楼层
fan1993423 发表于 2018-12-16 22:42
我认真读了下题,题目一开始强调水仙花数,我认为出这个题的意思指的就是一个三位数经过这种方法的变化, ...

可能是说的不够清楚,只是那水仙花数举个例子。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-16 23:06:14 | 显示全部楼层
冬雪雪冬 发表于 2018-12-16 22:55
可能是说的不够清楚,只是那水仙花数举个例子。

嗯,不过也无妨,本来就是来学其他鱼油代码的,只是这个题本身可能有歧义
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-16 23:15:26 | 显示全部楼层
fan1993423 发表于 2018-12-16 23:06
嗯,不过也无妨,本来就是来学其他鱼油代码的,只是这个题本身可能有歧义

嗯,以后的题目写的更严谨些。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 04:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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