鱼C论坛

 找回密码
 立即注册
查看: 2501|回复: 14

[已解决]很多函数中循环开始是while XXX,为什么呢

[复制链接]
发表于 2017-7-4 13:41:35 | 显示全部楼层 |阅读模式

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

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

x
如下面求水仙花数的程序,while temp来开始while循环请问为什么用temp,一般不是while然后一个条件吗,temp是一个参数怎么去当个条件呢?请求大神指点。

def find(N):
    for i in range(0,N):
        sum = 0
        temp = i  
    while temp:  
        sum = sum + (temp % 10) ** 3
        temp //= 10     
    if sum == i:  
        print(i)
for A in range(100,1000):
    find(A)
最佳答案
2017-7-4 15:19:16
  1. def find(N):
  2.     for i in range(0, N):
  3.         sum = 0
  4.         temp = i
  5.     while 1:
  6.         sum = sum + (temp % 10) ** 3
  7.         temp //= 10
  8.         if temp == 0:
  9.             break
  10.     if sum == i:
  11.         print(i)


  12. for A in range(100, 1000):
  13.     find(A)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-7-4 13:49:28 | 显示全部楼层
temp 为 0 的时候 False
temp 为 非0 的时候是 True
这就是条件呀!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-4 14:04:07 | 显示全部楼层
while 条件:
只要条件里不是0和Flase,这两个数,就会执行while循环里面的语句,如while 1:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-4 14:04:47 | 显示全部楼层
ba21 发表于 2017-7-4 13:49
temp 为 0 的时候 False
temp 为 非0 的时候是 True
这就是条件呀!

那也就是说是TRUE的时候while循环就能运行吧,可是如果我用while TRUE来开始循环却不能得到想要的水仙花数,这又是为什么呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-4 14:07:38 | 显示全部楼层
ButcherRabbit 发表于 2017-7-4 14:04
while 条件:
只要条件里不是0和Flase,这两个数,就会执行while循环里面的语句,如while 1:

我试了试while 1: 运行程序之后没有反应,这是为什么啊,难道在这个函数里必须要while temp才行吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-4 14:37:15 | 显示全部楼层
while 1当然也是有反应的。你肯定是没有输出条件,才会没感觉出来效果。
while 后面只要跟非false条件就都可以。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-4 15:17:05 | 显示全部楼层
ooxx7788 发表于 2017-7-4 14:37
while 1当然也是有反应的。你肯定是没有输出条件,才会没感觉出来效果。
while 后面只要跟非false条件就都 ...

那你可不可以改一下我的代码使它用while 1: 来循环,我看看我应该怎么改
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-4 15:19:16 | 显示全部楼层    本楼为最佳答案   
  1. def find(N):
  2.     for i in range(0, N):
  3.         sum = 0
  4.         temp = i
  5.     while 1:
  6.         sum = sum + (temp % 10) ** 3
  7.         temp //= 10
  8.         if temp == 0:
  9.             break
  10.     if sum == i:
  11.         print(i)


  12. for A in range(100, 1000):
  13.     find(A)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2017-7-4 15:56:36 | 显示全部楼层

支持大佬来答疑。。我就是来灌水的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-4 18:17:38 | 显示全部楼层
本帖最后由 ba21 于 2017-7-4 18:30 编辑
夜深听雨 发表于 2017-7-4 14:04
那也就是说是TRUE的时候while循环就能运行吧,可是如果我用while TRUE来开始循环却不能得到想要的水仙花 ...

我突然感觉天昏地暗,对这个世界失去信心了!


temp 是条件,要么为True, 要么为False。为True时循环,为False就不循环;
temp 也是变量,在你的代码里他不可能时时该该都是 非0 的值, 当 值为0 的时候会退出循环;假设你把 temp设为True ,你觉得你的程序还能退出吗?


  1. def find(N):
  2.     for i in range(0,N):
  3.         sum = 0
  4.         temp = i  
  5.     while 1:  
  6.         sum = sum + (temp % 10) ** 3
  7.         temp //= 10      
  8.     if sum == i:  
  9.         print(i)
  10. for A in range(100,1000):
  11.     find(A)
复制代码


补充:
while temp:
        sum = sum +(temp %10) ** 3
        temp //=10                 # temp = temp // 10 (temp 除以 10 取整,然后把再赋值给temp)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-7-4 19:09:29 | 显示全部楼层
本帖最后由 夜深听雨 于 2017-7-4 19:21 编辑
ba21 发表于 2017-7-4 18:17
我突然感觉天昏地暗,对这个世界失去信心了!


Soga明白了,谢谢啊不离不弃
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-4 19:13:45 | 显示全部楼层
夜深听雨 发表于 2017-7-4 19:09
Soga明白了,谢谢啊不离不弃

求 结贴
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-4 19:17:19 | 显示全部楼层

终于懂了,谢谢大佬
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-4 19:31:01 | 显示全部楼层

结贴意思是mark已解决吗,sry啊感觉你的世界要再次黑暗了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-4 19:32:51 | 显示全部楼层
夜深听雨 发表于 2017-7-4 19:31
结贴意思是mark已解决吗,sry啊感觉你的世界要再次黑暗了

我靠什么意思。就你这脑子还学编程,去死吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-28 09:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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