inesms 发表于 2020-9-8 20:46:38

【python新手求助】第九课水仙花问题求助

for i in range(100,1000):
    summe = (i/100) ** 3 +((i%100)/10) ** 3 + ((i%100)%10 )** 3
    if summe == i:
      print(summe)

请问我这样写没反应的原因是什么呜呜……

1q23w31 发表于 2020-9-8 20:57:08


for i in range(100,1000):
    summe = (i//100) ** 3 +((i%100)//10) ** 3 + ((i%100)%10 )** 3
    if summe == i:
      print(summe)

应该用地板除法

sunrise085 发表于 2020-9-8 21:08:02

本帖最后由 sunrise085 于 2020-9-8 21:09 编辑

summe = (i/100) ** 3 +((i%100)/10) ** 3 + ((i%100)%10 )** 3
这一句有问题
其中,i/100 得到的不是百位数,而是一个小数,应该用地板除,i//100,这样得到的才是百位数
(i%100)/10 也是同样的错误,应该写成 (i%100)//10

原因是,python中对数据类型要求不严格,除法的结果都是小数,即使相除的两个数都是整数,结果依然是小数,在python中地板除才是整除

for i in range(100,1000):
    summe = (i//100) ** 3 +((i%100)//10) ** 3 + ((i%100)%10 )** 3
    if summe == i:
      print(summe)

qq16542 发表于 2020-9-8 21:09:41

本帖最后由 qq16542 于 2020-9-8 21:10 编辑

i/100/是除的意思 百位数是取整用 //十位数是i除100求余数再除10取除整数
你可以先改下
页: [1]
查看完整版本: 【python新手求助】第九课水仙花问题求助