我知道字符串可以用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 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 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) 哗,利害,我怎么没想到转换成字符,再转回数字呢?二楼的看不懂。比较高深,先谢谢你
页:
[1]