wangxiaolvshi 发表于 2022-6-3 11:28:00

求水仙花数

"""计算100-999之间的水仙花数
所谓水仙花数,即一个数的个位3次幂+十位的3次幂+百位的3次幂的和与该数相等
如:153=3**3+5**3+1**3"""

以下是老师讲的方法:

for item in range(100,1000):
    ge = item % 10
    shi = item // 10 % 10
    bai = item // 100
    if ge**3 + shi**3 + bai **3 == item:
      print(item)

我想通过列表,通过下角标取值,分别取出个十百位数值,然后在通过if判断实现,不知道会不会更简便些,但能力有限,故求助大咖们帮忙!

Twilight6 发表于 2022-6-3 11:38:26




可以这样用列表:

for item in range(100,1000):
    temp =
    if temp**3 + temp**3 + temp **3 == item:
      print(item)

也可以用字符串下标索引,只是索引后需要转化为 int,参考代码:

for item in range(100,1000):
    temp = str(item)
    ge = int(temp)
    shi = int(temp)
    bai = int(temp)
    if ge**3 + shi**3 + bai **3 == item:
      print(item)

jackz007 发表于 2022-6-3 11:47:28

for item in range(100 , 1000):
    d , x = 0 , item
    while x:
      d += (x % 10) * (x % 10) * (x % 10)
      x //= 10
    if d == item:
      print(item)

执念的罗非鱼 发表于 2022-6-16 05:56:37

jackz007 发表于 2022-6-3 11:47


while x:是什么意思?

jackz007 发表于 2022-6-16 10:22:55

执念的罗非鱼 发表于 2022-6-16 05:56
while x:是什么意思?

       每一个整型数都是有逻辑值的,0 值为 False,非 0 值为 True。在本例中,只要 x 的值不为 0 就是 True。

亻灰呆 发表于 2022-6-17 18:27:38

{:5_109:}
页: [1]
查看完整版本: 求水仙花数