在python中使用int列表遇到麻烦

时间:2018-11-01 04:03:25

标签: python

我正在尝试在python中找到所有三位数字的阿姆斯壮数字。
我的脚本是

import re
a=[x for x in range(100, 1000)]
m = [int(e) for e in re.search((a),",")]
print(m)
z=((m[0]^len(m))+(m[1]^len(m))+(m[2]^len(m)))==m
print(z)

当我尝试运行此代码时,它会返回

Traceback (most recent call last):
  File "ppc1-1 (2).py", line 3, in <module>
    m = [int(e) for e in re.search((a),",")]
  File "/usr/lib/python3.6/re.py", line 182, in search
    return _compile(pattern, flags).search(string)
  File "/usr/lib/python3.6/re.py", line 289, in _compile
    p, loc = _cache[type(pattern), pattern, flags]
TypeError: unhashable type: 'list'

我的目标是找到所有三位数的阿姆斯壮数字。

3 个答案:

答案 0 :(得分:0)

您可以通过以下方式找到军械库编号。

您的代码审核

1)'^'并不意味着python'**'运算符中的指数就是指数。

2)您希望如何在不使用循环的情况下遍历所有三个数字?

a=[x for x in range(100, 1000)]

for i in a:
    m=list(map(int, str(i)))
    length=len(m)

    z=((m[0]**length)+(m[1]**length)+(m[2]**length))
    if z==i:
        print("The armstong number is",i)

答案 1 :(得分:0)

这是我对您问题的回答:

  a = [x for x in range(100, 1000)]
  for i in range(0, len(a)):
    digits = [int(x) for x in str(a[i])]
    if (digits[0]**3 + digits[1]**3 + digits[2]**3) == a[i]:
        print a[i]

希望对您有帮助。

答案 2 :(得分:0)

这仅用于在python中找到三位数的阿姆斯特朗编号。

import re
length = 3
arm = [e for e in range(100, 1000) if e == ((e/100)%10)**length + ((e/10)%10)**length + (e%10)**length]
print arm