关于18讲的水仙花数
自己写的代码,跑不出来,不知道哪里出了问题,和参考答案的思路看起来也差了很多。。求大神解答
for i in range(100,1000):
a = i//100
b = (i//10)-a
c = i-a-b
if i == a**3 + b**3 + c**3:
print(i) c = i-a*100-b*10 本帖最后由 柿子饼同学 于 2021-5-30 16:29 编辑
>>> i = 153
>>> a = i // 100
>>> a
1
>>> b = i // 10 - a
>>> b
14
>>> c = i - a - b
>>> c
138
>>>
你看看,假设i = 153,那i // 10 是15,不是5{:10_245:}
自己写了一个帖子,可以看看{:10_297:}
浅谈水仙花数题目
https://fishc.com.cn/thread-192863-1-1.html
(出处: 鱼C论坛)
你的 a // 100 获得的是 百位数的值
而你 b、c 获取的值都是不正确的,我帮你改了下,看代码注释吧
参考代码:
for i in range(100,1000):
a = i//100
b = (i//10)%10
# 先 // 10 ,去掉个位数,再求余,即得到十位数
c = i%10
# 对 i 直接 %10 求余 即得到个位数值
if i == a**3 + b**3 + c**3:
print(i)
还有个更简单的方法,如果你不想用数学计算出各个位置上的数,可以将 i 先转为 字符串,利用字符串切片来进行判断即可:
参考代码:
for i in range(100,1000):
a,b,c = str(i)
if i == int(a)**3 + int(b)**3 + int(c)**3:
print(i)
for i in range(100,1000):
a = i//100
b = (i//10)-a*10
c = i-a*100-b*10
if i == a**3 + b**3 + c**3:
print(i) zz学编程 发表于 2021-5-30 16:27
c = i-a*100-b*10
啊啊啊,我傻了!蟹蟹!!! 柿子饼同学 发表于 2021-5-30 16:28
你看看,假设i = 153,那i // 10 是15,不是5
自己写了一个帖子,可以看看
浅谈水仙 ...
恍然大悟知道自己的致命错误了。。蟹蟹,我看看文章~ 谢谢大家!我太蠢了!都让我get到自己的错了,可惜只能有一个最佳【就给了第一位同学啦】 wmy1212 发表于 2021-5-30 16:37
谢谢大家!我太蠢了!都让我get到自己的错了,可惜只能有一个最佳【就给了第一位同学啦】
第一位同学不是答案,最佳我改给二楼了
不能乱给哈,不然可能会误导别的鱼油
Twilight6 发表于 2021-5-30 16:39
第一位同学不是答案,最佳我改给二楼了
不能乱给哈,不然可能会误导别的鱼油
好的哇,知道了{:5_92:} for i in range(100,1000):
a = i//100
b = (i-a*100)//10
c = i-a*100-b*10
if i == a**3 + b**3 + c**3:
print(i)
最后修改之后是这样,结果是对的了 wmy1212 发表于 2021-5-30 16:43
好的哇,知道了
给渔币,太客气了{:10_254:}
页:
[1]