鱼C论坛

 找回密码
 立即注册
查看: 635|回复: 2

[已解决]Python课后练习009

[复制链接]
发表于 2020-5-3 23:23:38 | 显示全部楼层 |阅读模式

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

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

x
for i in range(100, 1000):
    sum = 0
    temp = i
    while temp:
        sum = sum + (temp%10) ** 3
        temp //= 10         # 注意这里要使用地板除哦~
    if sum == i:
        print(i)
为什么要把这里的i的值重新赋给temp,不重新赋值的话为什么程序运行不了?
num = 100
while True :
    thesum = 0
    temp = num
    while temp :
        thesum = thesum + (temp % 10)**3
        temp //= 10
    if thesum == num :
        print (num,end = " ")
        num += 1
    else :
        num += 1
        if num == 1000 :
            break
换成while的话这里的num如果不重新赋值给temp也会无限循环,为什么?
最佳答案
2020-5-3 23:29:53
本帖最后由 Twilight6 于 2020-5-3 23:35 编辑

看这代码应该是水仙花数吧。
for i in range(100, 1000):
    sum = 0
    temp = i  # 因为水仙花数是要满足各位位数上的三次方的和等于它本身,所以这里要重新赋值
    while temp: 
        sum = sum + (temp%10) ** 3
        temp //= 10          # 因为没有重新赋值的话 i 就会除以十后 改变了值
    if sum == i:              # 导致这边无法判断是不是等于本身
        print(i)
第二个代码也是同样的道理:
num = 100
while True :
    thesum = 0
    temp = num # 要先拿一个临时变量,拿去运算而不改变本身的值,因为本身后面还需要判断是否相等
    while temp :
        thesum = thesum + (temp % 10)**3
        temp //= 10  # 就是这,临时变量的值会发生改变 
    if thesum == num :  # 如果你没用临时变量,会导致后面无法判断是否与本身相等
        print (num,end = " ")
        num += 1
    else :
        num += 1
        if num == 1000 :
            break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-3 23:29:53 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-5-3 23:35 编辑

看这代码应该是水仙花数吧。
for i in range(100, 1000):
    sum = 0
    temp = i  # 因为水仙花数是要满足各位位数上的三次方的和等于它本身,所以这里要重新赋值
    while temp: 
        sum = sum + (temp%10) ** 3
        temp //= 10          # 因为没有重新赋值的话 i 就会除以十后 改变了值
    if sum == i:              # 导致这边无法判断是不是等于本身
        print(i)
第二个代码也是同样的道理:
num = 100
while True :
    thesum = 0
    temp = num # 要先拿一个临时变量,拿去运算而不改变本身的值,因为本身后面还需要判断是否相等
    while temp :
        thesum = thesum + (temp % 10)**3
        temp //= 10  # 就是这,临时变量的值会发生改变 
    if thesum == num :  # 如果你没用临时变量,会导致后面无法判断是否与本身相等
        print (num,end = " ")
        num += 1
    else :
        num += 1
        if num == 1000 :
            break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-4 00:00:09 | 显示全部楼层
Twilight6 发表于 2020-5-3 23:29
看这代码应该是水仙花数吧。

第二个代码也是同样的道理:

原来是这样,感谢大佬😬😬😬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-27 03:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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