鱼C论坛

 找回密码
 立即注册
查看: 1158|回复: 13

[已解决]while循环问题

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

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

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

x


各位大神~  
请教一个小问题~~

就是为什么当while的statements中有非print的信息则不会循环自动执行呢?

如果是print 则会变成死循环,一直打印print的内容
但是如果print后还有类似input的函数  则不会?

这是为什么呢?

图片里的代码是我写的一个作业的代码
如果没有input那一行  就会死循环,可是有就不会,我想不懂这里是为什么呢?

感谢大家的回答~~
最佳答案
2020-5-23 20:09:48
为什么当while的statements中有非print的信息则不会循环自动执行

不是有非rprint 才不会循环自动执行,你理解错了,是因为 函数 input()让程序暂停运行,等待用户输入,将用户输入的值转为字符串,后输出,每次循环到了input 就会等待你用户的输入。而且你这里的循环 条件是用temp  ,又因为 temp是接受 input 所以你可以通过 input 来决定是否继续循环,比如这个代码:
while True:
    temp = input('Please enter number~')
这个就是个死循环,只不过每次循环input 都会将程序暂停运行 等待你的输入~

你需要知道一点的是:
只要 非零 非空字符串、字典、元组、列表等 都为布尔类型的值 True
只要 为 0  空字符串、字典、元组、列表 等 布尔类型的值都为 False
所以因为你temp是拿着当作循环的的 所以只要 while 循环条件为True  循环都不会停下来

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

使用道具 举报

 楼主| 发表于 2020-5-23 17:06:56 | 显示全部楼层
具体的代码是这样的~·
1.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-23 17:08:50 | 显示全部楼层
因为 temp 一直没变,条件一直为 True,自然死循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-5-23 17:33:11 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-23 17:08
因为 temp 一直没变,条件一直为 True,自然死循环

看这么多帖子,你的回答最精简

但是为什么有种戳着脊梁骨的感觉

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

使用道具 举报

发表于 2020-5-23 17:42:06 | 显示全部楼层
Aber 发表于 2020-5-23 17:33
看这么多帖子,你的回答最精简

但是为什么有种戳着脊梁骨的感觉

本人不善表达,多说不如少说
不过还是求个最佳
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-23 17:42:57 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-23 17:42
本人不善表达,多说不如少说
不过还是求个最佳

我要是楼主就给你了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-23 17:43:33 | 显示全部楼层
Aber 发表于 2020-5-23 17:42
我要是楼主就给你了

我果真凭实力眼瞎
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-23 17:45:38 | 显示全部楼层

不过我发了个求助~~ 你来解答一下呀,我是楼主我说了算
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-23 20:09:48 | 显示全部楼层    本楼为最佳答案   
为什么当while的statements中有非print的信息则不会循环自动执行

不是有非rprint 才不会循环自动执行,你理解错了,是因为 函数 input()让程序暂停运行,等待用户输入,将用户输入的值转为字符串,后输出,每次循环到了input 就会等待你用户的输入。而且你这里的循环 条件是用temp  ,又因为 temp是接受 input 所以你可以通过 input 来决定是否继续循环,比如这个代码:
while True:
    temp = input('Please enter number~')
这个就是个死循环,只不过每次循环input 都会将程序暂停运行 等待你的输入~

你需要知道一点的是:
只要 非零 非空字符串、字典、元组、列表等 都为布尔类型的值 True
只要 为 0  空字符串、字典、元组、列表 等 布尔类型的值都为 False
所以因为你temp是拿着当作循环的的 所以只要 while 循环条件为True  循环都不会停下来

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

使用道具 举报

发表于 2020-5-23 23:11:08 | 显示全部楼层
如果有了input的话
每循环一次,用户就输入一次,temp的值就会变一次
而temp是决定是否进入循环的关键( 因为有while temp……:  )
所以用户输入的temp的值不符合进入循环的条件时就跳出循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-25 08:57:16 | 显示全部楼层
Twilight6 发表于 2020-5-23 20:09
不是有非rprint 才不会循环自动执行,你理解错了,是因为 函数 input()让程序暂停运行,等待用户输入, ...

那你还知道哪些函数是会导致 循环 暂停运行的吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-25 09:06:06 | 显示全部楼层
pythongirl 发表于 2020-5-25 08:57
那你还知道哪些函数是会导致 循环 暂停运行的吗?

  yield     生成器   小甲鱼后面会教

其他的暂时没接触过了吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-25 09:12:54 | 显示全部楼层
Twilight6 发表于 2020-5-25 09:06
yield     生成器   小甲鱼后面会教

其他的暂时没接触过了吧

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

使用道具 举报

发表于 2020-5-25 09:13:25 | 显示全部楼层

没事  有问题欢迎继续发帖~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-21 01:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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