qiangfuzhou 发表于 2022-8-23 11:07

菜鸟求助关于python水仙花数求解的小问题

本帖最后由 qiangfuzhou 于 2022-8-24 08:51 编辑

看到有一个关于水仙花数的一段语言自己试了试,有地方不懂 。求大佬求看看2件事:
1. 给帮忙看看 #的分析是不是对,都是我自己琢磨的,不知道对不对。
2. 给帮忙看看最后一句为什么要写,为什么要这么写。不理解


i=100;a=0;b=0;c=0#因为水仙花数是个三位数,所以i的取值范围是100~999,a代表百位数,取值是0~9,b代表是十位数,取值是0~9,才代表个位数,取值是0~9。
while i<1000:         #根据while条件判断进入遍历循环
缩进 a=i//100          #跟水仙花数的特性,百十分三位的数的3次方之和等于该数,算出百位数,十位数,个位数。
缩进 b=(i-a*100)//10
缩进 c=i-a*100-b*10
缩进 ifi==(a**3+b**3+c**3):   #当a,b,c,三个数满足水仙花数特性时,进入条件判断,
缩进缩进 print(i)                     #打印水仙花数
缩进 i+=1                                 #不知道为什么要写最后这一行。试了一下,写最后一行就能显示,不写就不显示数据。

ForMemRS 发表于 2022-8-23 11:47

https://img.ifool.me/i/2022/08/23/iyiyko.webp
学好基础再来练习算法。 不写i+=1. i 就不会自增 永远是100 怎么能实现

甜萝 发表于 2022-8-23 11:51

我睡一觉 再来看看有没有解决办法{:300_969:}

wawai 发表于 2022-8-23 11:57

分析基本对的。如果循环体内没有i+=1的话,i就一直是100了,也就是死循环了;100不是水仙花数,不会有输出;同时你判断的时候不是用‘=’,这个是赋值符,应该用‘==’。

凡人i 发表于 2022-8-23 13:04

最后一行的意义就是让i从100递增到999,不然i就没办法递增了

甜萝 发表于 2022-8-23 13:14

wawai 发表于 2022-8-23 11:57
分析基本对的。如果循环体内没有i+=1的话,i就一直是100了,也就是死循环了;100不是水仙花数,不会有输出 ...

确实 最后一行是个跳出循环的出口 没有这个出口 while下面的语句就会一直循环

qiangfuzhou 发表于 2022-8-23 13:50

wawai 发表于 2022-8-23 11:57
分析基本对的。如果循环体内没有i+=1的话,i就一直是100了,也就是死循环了;100不是水仙花数,不会有输出 ...

==是打字的时候没注意,少打了一个=,感谢大佬解惑。i=+1的问题感觉有点明白了。

qiangfuzhou 发表于 2022-8-23 13:56

ForMemRS 发表于 2022-8-23 11:47
学好基础再来练习算法。 不写i+=1. i 就不会自增 永远是100 怎么能实现

看的书上就是写了复合赋值符号表示什么意思。但是没写怎么用。书上就是将while循环语句写了这个水仙花的例子。我一开始看不懂,就一点点琢磨。也不知道这个叫算法。刚自学到while这。

qiangfuzhou 发表于 2022-8-23 13:59

凡人i 发表于 2022-8-23 13:04
最后一行的意义就是让i从100递增到999,不然i就没办法递增了

稍微懂了一些,感谢指点

demo_plus 发表于 2022-8-24 08:53

初值
while (条件):
    循环体
    使while循环趋向于结束的语句
页: [1] 2
查看完整版本: 菜鸟求助关于python水仙花数求解的小问题