作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Python 编程语言的初学者,我一直在使用一个网站来帮助我锻炼。如果给定的数字是 narcissistic,它给了我一个挑战来制作一个返回 true 的程序。否则为假。
自恋数字的例子:
153 (3 digits): 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153
1634 (4 digits): 1^4 + 6^4 + 3^4 + 4^4 = 1 + 1296 + 81 + 256 = 1634
但由于某些原因,当给定数字 371
时,函数返回 False
而不是 True
。
代码:
def narcissistic(value):
logical = True
logical2 = True
i = 0
j = 0
notation = 10
sum = 0
#Calculating the number notation
while logical:
if 10 ** i <= value:
notation = 10 ** i
i = i + 1
else:
logical = False
#i from now on is also the qauntity of digits
while logical2:
if ( notation / 10 ** j ) >= 1:
sum = sum + ( value // ( notation / 10 ** j ) ) ** i
j = j + 1
else:
logical2 = False
if sum == value:
return True
else:
return False
最佳答案
您的代码非常接近!问题出在这里:
sum = sum + ( value//( notation/10 ** j ) ) ** i
对于 1634
,这将乘以 1
、16
、163
和 1634
。您只需要这些数字的 LSB,在此示例中为 1
、6
、3
和 4
- 使用模运算符得到这个。如果我们将它们修改 10 只得到 LSB...
sum = sum + (( value//( notation/10 ** j ) ) % 10) ** i
...那么代码就可以完美运行了。
关于python - Python 中的自恋数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58525842/
我是一名优秀的程序员,十分优秀!