#水仙花数 num=int(input('请输入任意范围,将会获得其范围内的全部水仙花数:')) for i in range(1,num+1): cifang = len(str(i)) #这个数的位数,即为次方数 total = 0 #各位数N次方之和 j = i #由于后面i会用作比较,因此我不更改i的值 last_w = 0 #这个数的最后一位数 while j > 0 and cifang > 2: last_w = j % 10 #对10求余,表示这个数的最后一个数 j = j // 10 #去掉最后一位数 total += last_w ** cifang #计算各位的N次方之和 if total == i: #若是各位数的N次方以后与原数i相等,就打印 print(i)