我正在尝试在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'
我的目标是找到所有三位数的阿姆斯壮数字。
答案 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