鱼C论坛

 找回密码
 立即注册
查看: 1520|回复: 7

[已解决]求问这个程序是怎么回事?

[复制链接]
发表于 2017-9-24 16:54:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #-------100-999之间的水仙花数-------#
  2. x=100
  3. lifanghe=0
  4. for i in range(100, 1000):
  5.     gewei =int( x % 10) #对三位数求余
  6.     x = x//10   #除得只剩两位数
  7.     shiwei = x%10 #对两位数求余
  8.     baiwei = x//10 #百位上的数字
  9.     lifanghe = gewei**3 + shiwei**3 + baiwei**3
  10.     if lifanghe == x:
  11.         print(x)
  12.     x= x+1
  13.    
复制代码


运行出来什么都没有,求问各位大佬是怎么回事?
最佳答案
2017-9-25 09:51:58
问题在于你的第六行代码:
你把x//10又赋值给了x,所以你的第12行里,x=x+1, x的值就不是100+1了
解决方法:你把x//10赋值给一个temp就行了,接下来的x也用temp代替就行了
  1. #-------100-999之间的水仙花数-------#
  2. x=100
  3. lifanghe=0
  4. for i in range(100, 1000):
  5.     gewei =int( x % 10) #对三位数求余
  6.     temp = x//10   #除得只剩两位数
  7.     shiwei = temp%10 #对两位数求余
  8.     baiwei = temp//10 #百位上的数字
  9.     lifanghe = gewei**3 + shiwei**3 + baiwei**3
  10.     if lifanghe == x:
  11.         print(x)
  12.     x= x+1
复制代码
TIM截图20170924165345.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-9-24 17:09:24 | 显示全部楼层
for i in range(100, 1000):
    gewei =int( i % 10) #对三位数求余
    x = i//10   #除得只剩两位数
    shiwei = x%10 #对两位数求余
    baiwei = x//10 #百位上的数字
    lifanghe = gewei**3 + shiwei**3 + baiwei**3
    if lifanghe == i:
        print(i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-24 17:51:24 | 显示全部楼层
  1. #-------100-999之间的水仙花数-------#
  2. for i in range(100, 1000):
  3.     temp = i;
  4.     gewei =temp % 10 #对三位数求余
  5.     temp = temp // 10   #除得只剩两位数
  6.     shiwei = temp % 10 #对两位数求余
  7.     baiwei = temp // 10 #百位上的数字
  8.     lifanghe = baiwei**3 + shiwei**3 + gewei**3
  9.     if lifanghe == i:
  10.         print(i)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-25 08:25:01 | 显示全部楼层
堕落之翼 发表于 2017-9-24 17:09
for i in range(100, 1000):
    gewei =int( i % 10) #对三位数求余
    x = i//10   #除得只剩两位数

求问我原来的程序为什么运行什么都没有呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-25 09:51:58 | 显示全部楼层    本楼为最佳答案   
问题在于你的第六行代码:
你把x//10又赋值给了x,所以你的第12行里,x=x+1, x的值就不是100+1了
解决方法:你把x//10赋值给一个temp就行了,接下来的x也用temp代替就行了
  1. #-------100-999之间的水仙花数-------#
  2. x=100
  3. lifanghe=0
  4. for i in range(100, 1000):
  5.     gewei =int( x % 10) #对三位数求余
  6.     temp = x//10   #除得只剩两位数
  7.     shiwei = temp%10 #对两位数求余
  8.     baiwei = temp//10 #百位上的数字
  9.     lifanghe = gewei**3 + shiwei**3 + baiwei**3
  10.     if lifanghe == x:
  11.         print(x)
  12.     x= x+1
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-25 11:10:40 | 显示全部楼层
进入for 循环之前你把100赋值给了x
进入for 循环,你又在第6行那里,把x的值更新了:x=x//10。所以在你的循环体内始终是用更新后的x与lifanghe的值进行算数运算,所以在999次循环内都找不到符合条件的x的值,所以为空。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-25 12:40:35 | 显示全部楼层
工程狗 发表于 2017-9-25 09:51
问题在于你的第六行代码:
你把x//10又赋值给了x,所以你的第12行里,x=x+1, x的值就不是100+1了
解决方 ...

谢谢!!! 知道了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-25 12:42:49 | 显示全部楼层
铁棍阿童木 发表于 2017-9-25 11:10
进入for 循环之前你把100赋值给了x
进入for 循环,你又在第6行那里,把x的值更新了:x=x//10。所以在你的 ...

嗯嗯 谢谢!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-11 11:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表