循环结构求助。
关于求水仙花数的问题, 我用了新的思路写了一下, 代码出现了个细节问题, 我找不出来。 求大佬帮忙看看。题目是这样子的。
0. 编写一个程序,求解 100~999 之间的所有水仙花数。
科普:
如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数。
这次我用的思路是, 将循环中每一个数转化为字符串, 然后用 in 指令将字符串中每一个字符提取出来 转换成整型相加来判断是否是水仙花数。 具体代码如下:
for i in range(100, 1000):
i = str(i)
sum1 = 0
for each in i:
each = int(each)
sum1 += each ** 3
numb = i
numb = int(numb)
if sum1 == numb:
print(numb)
运算结果如下:
153
370
370
371
407
多了一个370 没搞懂问题出在哪里。 求大佬解答。 因为你把
numb = i
numb = int(numb)
if sum1 == numb:
print(numb)
这一块放在内层循环里面,每一次内层循环都会执行一遍,
前两位已经满足 sum1 == numb,而最后一个为0不影响 sum1 的值,所以就打印了两次
所以对结果的判断你应该放在内层循环的外面
故对你的代码修改如下:
for i in range(100, 1000):
i = str(i)
sum1 = 0
for each in i:
each = int(each)
sum1 += each ** 3
numb = i # 这里开始不要缩进内层循环里面
numb = int(numb)
if sum1 == numb:
print(numb) >>>
wp231957 发表于 2022-4-29 09:04
>>>
嗯啊, 这个我做出来了的。 我只是好奇如果用字符串的方式直接拿出来应该怎么做。 然后我弄出的结果多了一个370{:5_107:} 还找不到为什么。。。 爱笑的无赖 发表于 2022-4-29 09:24
嗯啊, 这个我做出来了的。 我只是好奇如果用字符串的方式直接拿出来应该怎么做。 然后我弄出的结果多了 ...
那就没啥必要了
你要先把int转成字符串计算时 再把字符串转成int 明显多了两道手续 划不来的 isdkz 发表于 2022-4-29 09:00
因为你把
numb = i
内嵌循环真的太头疼了。 盯了代码整整10分钟, 才弄明白你说的东西。
非常感谢大神的帮助之恩。瑞思拜~{:5_108:} wp231957 发表于 2022-4-29 09:35
那就没啥必要了
你要先把int转成字符串计算时 再把字符串转成int 明显多了两道手续 划不来的
哈哈哈是的。 这会不是学习敲代码嘛, 就当练习巩固 哈哈{:5_108:}
页:
[1]