鱼C论坛

 找回密码
 立即注册
查看: 2876|回复: 6

[已解决]水仙花

[复制链接]
发表于 2021-4-18 10:40:05 | 显示全部楼层 |阅读模式

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

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

x
零基础python 18讲
水仙花那题这样写为啥会多个999???


E57JE$N5V6L~~98ORTN`2UK.png
最佳答案
2021-4-18 10:44:19
本帖最后由 逃兵 于 2021-4-18 10:46 编辑

把return x去掉
把print(fuction())改成fuction()
def function():
    for x in range(100,1000):
        if x == (x%10)**3+(x//100)**3+((x//10)%10)**3:
            print(x)

function()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-18 10:44:12 | 显示全部楼层
把代码拆开写,那样看着有点乱
print("一千以内的水仙花数为: ")
for n in range(100, 1000):
    hun = n // 100
    ten = (n - hun * 100) // 10
    ind = n % 10
    m = hun**3 + ten**3 + ind**3
    if n == m:
        print("%d \t" %n, end="")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-18 10:44:19 | 显示全部楼层    本楼为最佳答案   
本帖最后由 逃兵 于 2021-4-18 10:46 编辑

把return x去掉
把print(fuction())改成fuction()
def function():
    for x in range(100,1000):
        if x == (x%10)**3+(x//100)**3+((x//10)%10)**3:
            print(x)

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

使用道具 举报

发表于 2021-4-18 10:47:38 | 显示全部楼层
因为你多了一个return x
这个return执行的时候刚好是for循环进行完的时候
此时,x=999,返回值返回给最后一行调用时的print函数
自然就多打印了一次999

既然函数内部已经通过if判断print了
根本就用不到返回值
调用的时候直接function()就好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-18 10:49:03 | 显示全部楼层
逃兵 发表于 2021-4-18 10:44
把return x去掉
把print(fuction())改成fuction()

为啥这样就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-18 10:51:40 | 显示全部楼层
昨非 发表于 2021-4-18 10:47
因为你多了一个return x
这个return执行的时候刚好是for循环进行完的时候
此时,x=999,返回值返回给最后 ...

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

使用道具 举报

发表于 2021-4-18 10:53:54 | 显示全部楼层

额,没有最佳答案的话也可以右下角评分加个贡献
算是鼓励下回答问题的同学(厚颜无耻

评分

参与人数 1贡献 +3 收起 理由
为你bu再恋 + 3

查看全部评分

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-9 01:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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