checkily 发表于 2018-1-21 23:54:30

我知道字符串可以用index提出每一个字符,数字可以吗?

学到求水仙花集,用的是:
for i in range(100,1000):
        temp = i
        result = 0
        while temp:
        result = result + (temp%10)**3
        temp = temp//10

分别提取,个、十、百位进行操作。我想问,数字能像字符串那用,用i、i、i 分别表示百、十、个位吗?如果可以的话,程序就可以变成:
for i in range(100,1000):
        result=i**3+i**3+i**3

但实际是不行的,怎样才能简单提出每一个数字呢?

h20060304 发表于 2018-1-22 02:54:24

本帖最后由 h20060304 于 2018-1-22 04:36 编辑

你的想法很好啊,只是你可能还没有到达那个层次!继续努力!

下面给你贴上 代码:如果有问题,及时回复!
def nature(n):
   
    while True:
      
      yield n

      n += 1

start = 100

number_gen = nature(start)

number = next(number_gen)

while number < 1000:

    new_number = sum(map(lambda x : int(x) ** 3, str(number)))
   
    if new_number == number:
   
      print('{} 是水仙花数'.format(number))
      
    number = next(number_gen)

BngThea 发表于 2018-1-22 07:29:39

本帖最后由 BngThea 于 2018-1-22 09:05 编辑

先将i转换为str
再提取每一个字符
将每个字符转换为int
最后进行判断

for i in range(100,1000):
    t = str(i)
    total = int(t)**3 + int(t)**3 + int(t)**3
    if i == total:
      print("%d 是水仙花数!" % i)

checkily 发表于 2018-1-22 10:05:30

哗,利害,我怎么没想到转换成字符,再转回数字呢?二楼的看不懂。比较高深,先谢谢你
页: [1]
查看完整版本: 我知道字符串可以用index提出每一个字符,数字可以吗?