设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 7587|回复: 2
打印 上一主题 下一主题

每日一坑-阿姆斯特朗数的疑问

[复制链接]

1

主题

0

好友

35

积分

新手上路

Rank: 1

跳转到指定楼层
楼主
发表于 2019-9-28 16:05:57 |只看该作者 |倒序浏览
def amu(n):
    for j in range(1,n + 1):
        # a = str(j).split()
        x = len(str(j))
        m = []
        # print(m)
        for i in str(j):
            s = int(i) ** x
            # print(x)
            m.append(s)
            p = sum(m)
            # print(p)
    r = []
    if j == p:
        r.append(j)
    return r

amu(1000)
我这个为什么执行完出不来结果呢?...

还有个问题。。老师的答案:
def judge_arms(i):    # 将该数转换为字符串 123 -> '123'    tem = str(i)
    # 按照 n位正整数等于其各位数字的n次方 进行求和    # sum = 1**3 + 2**3 + 3**3    tem_sum = sum([int(j)**len(tem) for j in tem])
    # 判断求和之后的数是否和原数相等    if i == tem_sum:
        return True

'''寻找小于 1000 的阿姆斯特朗数逐一遍历小于 1000 的数判断是否为阿姆斯特朗数'''
def arms(N):    for i in range(1, N+1):
        if judge_arms(i):            print(i)arms(1000)

第3行,sum()里面的内容为什么两边要加上[]呢?~
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

沙发
发表于 2019-9-28 17:10:32 |只看该作者
  1. def amu(n):
  2.     r = []
  3.     for j in range(1,n + 1):
  4.         # a = str(j).split()
  5.         x = len(str(j))
  6.         m = []
  7.         # print(m)
  8.         for i in str(j):
  9.             s = int(i) ** x
  10.             # print(x)
  11.             m.append(s)
  12.             p = sum(m)
  13.             # print(p)
  14.         if j == p:
  15.             r.append(j)
  16.     return r

  17. print(amu(1000))
复制代码
你代码问题比较多,我就直接给你改吧
r应该在循环开始初始化,然后在循环里每一步发现正确的值的时候,添加到r里
最后的结果你也没有print

sum的问题是因为里面是一个列表,相当于
x = [int(j)**len(tem) for j in tem]
tem_sum = sum(x)

列表等方面的基础内容你还得再看看
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

1

主题

0

好友

35

积分

新手上路

Rank: 1

板凳
发表于 2019-9-28 22:17:26 |只看该作者
crossin先生 发表于 2019-9-28 17:10
你代码问题比较多,我就直接给你改吧
r应该在循环开始初始化,然后在循环里每一步发现正确的值的时候,添加 ...

噢!!我以为int(j)**len(tem) for j in tem已经是个列表了,就不用加[]了。。
谢谢老师了!!还要继续学习呀
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-4-20 02:57 , Processed in 0.019255 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部