鱼C论坛

 找回密码
 立即注册
查看: 1658|回复: 11

[已解决]第四讲课后作业1,代码是如何限制while函数只执行对应次数

[复制链接]
发表于 2020-7-13 21:22:38 | 显示全部楼层 |阅读模式

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

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

x
python入门第四讲《改进我们的小游戏》动动手1题
  1. temp = input('请输入一个整数:')
  2. number = int(temp)
  3. i = 1
  4. while number:
  5.     print(i)
  6.     i = i + 1
  7.     number = number - 1
复制代码

请问一下,在这个运行中,假设输入是5,代码是如何之循环5次后停下而不是继续向下num = num -1(变成-1、-2等等),为什么负数就不参与运行了;还有就是在运行时输入负数会进入死循环,如果把while number:改成while number > 1:是解决这个问题的办法吗?
最佳答案
2020-7-13 21:31:37
要知道在Python 中只要 0 、None、空字符串、空列表、空字典等 都可以看作布尔类型的值为 False

只要是 非0 ,非空字符串、列表、字典 等 都可以看作布尔类型的值为 True


而 while 循环叫做条件循环,模板是这样的: while <条件>: 只有当条件为True 时候 循环才会继续进行,或者进入循环,而当条件为 False 的时候退出循环

这里你while 循环里面每次 number 都会减少 1 ,所以当你 number 循环减少到 0 时候 即 while 循环条件为 False 就退出了 while 循环,前提是你输入正数

而如果你输入负数,会导致无限循环,也就是死循环,除非你把 循环内的 number = number - 1 改成 number + 1 ,才有可能让number 到达 0 的时候

如果把while number:改成while number > 1:是解决这个问题的办法吗?


可以解决,改成 number > 0 更好

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 2020-7-13 21:24:30 | 显示全部楼层
这个代码是正确的

“非 0 为真”
while number 就是在 number 不为 0 的时候循环,number 不停地 减一,最后总会变成 0,跳出循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-13 21:24:45 | 显示全部楼层
本帖最后由 Hello. 于 2020-7-13 21:27 编辑

  1. while number
复制代码

即判断是否为真,如果不是0就是真,继续循环

到0就是假了,不循环了

不会出现 负数情况


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

使用道具 举报

发表于 2020-7-13 21:28:51 | 显示全部楼层
本帖最后由 Hello. 于 2020-7-13 21:34 编辑

如果输入负数,因为程序不断在-1,则永远判断为负数,不为0,为真一直循环

你改的不对,如果>1,则只循环四次,可以改成
  1. while number >0
  2. while number >=1
复制代码


如果帮到你了,请设置最佳
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-13 21:31:37 | 显示全部楼层    本楼为最佳答案   
要知道在Python 中只要 0 、None、空字符串、空列表、空字典等 都可以看作布尔类型的值为 False

只要是 非0 ,非空字符串、列表、字典 等 都可以看作布尔类型的值为 True


而 while 循环叫做条件循环,模板是这样的: while <条件>: 只有当条件为True 时候 循环才会继续进行,或者进入循环,而当条件为 False 的时候退出循环

这里你while 循环里面每次 number 都会减少 1 ,所以当你 number 循环减少到 0 时候 即 while 循环条件为 False 就退出了 while 循环,前提是你输入正数

而如果你输入负数,会导致无限循环,也就是死循环,除非你把 循环内的 number = number - 1 改成 number + 1 ,才有可能让number 到达 0 的时候

如果把while number:改成while number > 1:是解决这个问题的办法吗?


可以解决,改成 number > 0 更好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-7-13 21:35:44 | 显示全部楼层
while number 表示如果number=0就停止循环
而number每次都减一
number=负数 减一就永远不能等于0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-14 11:42:54 | 显示全部楼层
这个代码没问题,0表示假,其他的表示真,从输入5,一直到4,3,2,1,最后是0,也就是假,就会退出循环。
最佳答案是我的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-14 13:23:57 | 显示全部楼层
Python里面false=0, 其他都是true

while number: 等同于while number != 0:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-14 18:48:51 | 显示全部楼层
Twilight6 发表于 2020-7-13 21:31
而 while 循环叫做条件循环,模板是这样的: while : 只有当条件为True 时候 循环才会继续进行,或者 ...

好的,感谢。想再问一下您提到的值为false的布尔类型的值是python编写中的既定规则吗?(就是类似于物理中遵循的公理定理一类的);后面那个原本是准备写number > 0: 的,后来打字的时候打错了,哈哈,感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-14 18:51:14 | 显示全部楼层
条件状语从句 发表于 2020-7-14 18:48
好的,感谢。想再问一下您提到的值为false的布尔类型的值是python编写中的既定规则吗?(就是类似于物理 ...


你可以用 bool 函数来看他们的布尔值,一个空的东西就为 False  不是空的东西就为 True
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-14 18:56:26 | 显示全部楼层
Twilight6 发表于 2020-7-14 18:51
你可以用 bool 函数来看他们的布尔值,一个空的东西就为 False  不是空的东西就为 True

好的,昨天看了小甲鱼的第四次课和最后的作业,没看到第五节,所以对一些数据类型还不是很熟悉,现在看到后面的视频明白了,感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-14 18:58:39 | 显示全部楼层
条件状语从句 发表于 2020-7-14 18:56
好的,昨天看了小甲鱼的第四次课和最后的作业,没看到第五节,所以对一些数据类型还不是很熟悉,现在看到 ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 17:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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