啊吁喔 发表于 2020-7-15 07:04:44

009讲

求大神帮我解读一下,小甲鱼水仙花的程序,没有注释有点看不透,万分感谢!

Twilight6 发表于 2020-7-15 07:57:46




看注释吧~ 这里举个例子 , 当循环到 153时候的运行过程 :

for i in range(100, 1000):# 找100~999的水仙花数

    sum = 0# 初始化数值,用于后面计算 百十个位数各自3次方的总和

    temp = i# 找个临时变量来暂时赋值,用于记录本身的值,因为后面计算会改变原本的值

    while temp:
      # 将temp 作为循环条件
      # 假设第1次循环temp = 153
      # 则第2次循环temp = 15
      # 第3次temp=1
      # 第4次因temp=0退出循环

      sum = sum + (temp % 10) ** 3
      # 第1次循环 sum = 0+(153%10)**3,sum = 27
      # 第2次循环 sum = 27+(15%10)**3,sum = 152
      # 第3次循环 sum = 152+(1)**3 , sum = 153

      temp //= 10
      # temp//10 = 15,则第1次循环 temp = 15
      # 第2次循环 temp//10 = 1 ,temp=1
      # 第3次 temp//10 = 0 则 temp=0

    if sum == i:# 退出循环后判断是否与本身相等, 若是打印,不是则开启下一次for循环

      print("100-999之间的水仙花数有:", end="")# print 默认参数end ='\n' 换行符号 我们用end="" 覆盖他的默认值 就不会换行
      print(i)



heidern0612 发表于 2020-7-15 07:58:32

可以参考下这个:戳我前进

啊吁喔 发表于 2020-7-15 08:32:58

Twilight6 发表于 2020-7-15 07:57
看注释吧~ 这里举个例子 , 当循环到 153时候的运行过程 :

懂了,感谢感谢

啊吁喔 发表于 2020-7-15 08:34:59

heidern0612 发表于 2020-7-15 07:58
可以参考下这个:戳我前进

看懂了,真的是大神写的代码,感谢感谢

Twilight6 发表于 2020-7-15 08:40:20

如果问题已经接近 ,别忘记设置【最佳答案】~

洋si子 发表于 2020-7-15 10:49:07

print('----------------------输出水仙花数100—999------------------------')
for i in range(100,1000):#找出100-999的水仙花数,设置1000是因为range只到末位数-1
    sum=0#初始化一个存放后面各自3次方的值
    a=i//100#百位的值
    b=(i-a*100)//10#用i减去百位整百余下的为十位上的取整得到十位上的数
    c=i%10#得到个位上的数
    sum=a**3+b**3+c**3#求和
    if sum==i:#水仙花数的判断条件
      print(i,end="       ")
      
当时答案代码也是没理解透,当时我的答案是这样的,有点low,但是希望能够参考

啊吁喔 发表于 2020-7-15 11:36:32

洋si子 发表于 2020-7-15 10:49
print('----------------------输出水仙花数100—999------------------------')
for i in range(100,1000 ...

感谢感谢,通俗易懂,很好的
页: [1]
查看完整版本: 009讲