| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
1. 寻找水仙花数 
 
题目要求:如果一个3位数等于其各位数字的立方和,则称这个数为水仙花数。例如153 = 1^3+5^3+3^3,因此153是一个水仙花数。编写一个程序,找出所有的水仙花数。 
 
def Narcissus(): 
    for each in range(100, 1000): 
        temp = each 
        sum = 0 
        while temp: 
            sum = sum + (temp%10) ** 3 
            temp = temp // 10  # 注意这里用地板除 
 
        if sum == each: 
            print(each, end='\t') 
 
print("所有的水仙花数分别是:", end='') 
Narcissus() 
就是这道题 下面是小甲鱼给出的答案 有没有大佬帮忙解释一下子 小白阅读这个实在是有一点困难 还有就是刚开始我没看答案自己想的思路就是把每个数字个位十位百位拆开然后分别立方判断是否等于原数字再决定是否将其输出 这种方法可行吗 有什么办法能直接将一个整型个位十位百位拆开呢  
 本帖最后由 1q23w31 于 2020-9-6 17:16 编辑 
- for i in range(100, 1000):
 
 -     sum = 0
 
 -     temp = i
 
 -     # 当temp > 0 时为True执行循环, 当temp 为 0 时为False, 退出循环
 
 -     while temp:
 
 -         # temp除以10的余数的3次方  首次除完即为个位,第二次为十位,第三次为百位,同时赋值给SUM参与下一次合计
 
 -         sum = sum + (temp%10) ** 3
 
 -         # temp除以10取整,个位数除以10整数位为0,此时temp为0结束while循环
 
 -         temp //= 10
 
 -     if sum == i:
 
 -         print(i)
 
  复制代码 
代码解释如上
按照你的思路代码如下
- for i in range(100, 1000):
 
 -     sum = 0
 
 -     temp = str(i)
 
 -     a=int(temp[0])
 
 -     b=int(temp[1])
 
 -     c=int(temp[2])
 
 -     sum = a**3+b**3+c**3
 
 -    
 
 -     if sum == i:
 
 -         print(i)
 
 
  复制代码 
 
 
 |   
 
 
 
 |