鱼C论坛

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

[已解决]小白关于while的一个小问题,求指点

[复制链接]
发表于 2020-3-31 11:48:10 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 Justin6 于 2020-3-31 23:14 编辑

请看论坛里小甲鱼的一串代码的一部分,如下
temp = input('请输入一个整数:')
number = int(temp)
while number:
    i = number - 1

第三行while number:
为什么可以这样用,while后不是加条件吗,为什么加number
且这这代码所表示的意义是什么。
最佳答案
2020-3-31 12:08:15
while number:  这里while只看 number的值是True 还是False.
如果while Ture: while体里面的代码就执行
如果while False: while体里面的代码就不会执行


在python中,以下数值会被认为是False:

为0的数字,包括0,0.0
空字符串,包括'', ""
表示空值的None
空集合,包括(),[],{}
其他的值都认为是True。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-31 11:49:13 | 显示全部楼层
int强制转换数据为整型
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 11:49:21 | 显示全部楼层
和while True的意义一样,只要number为True(不等于0)就继续循环
https://fishc.com.cn/thread-159048-1-1.html
还可以看下这篇帖子
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-3-31 11:50:29 | 显示全部楼层
没看错的话,这是个死循环吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 12:04:46 | 显示全部楼层
Hello. 发表于 2020-3-31 11:49
int强制转换数据为整型

int不就是整型么……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 12:08:15 | 显示全部楼层    本楼为最佳答案   
while number:  这里while只看 number的值是True 还是False.
如果while Ture: while体里面的代码就执行
如果while False: while体里面的代码就不会执行


在python中,以下数值会被认为是False:

为0的数字,包括0,0.0
空字符串,包括'', ""
表示空值的None
空集合,包括(),[],{}
其他的值都认为是True。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 13:32:14 | 显示全部楼层
temp = input('请输入一个整数:')
number = int(temp)
while number:
    i = number - 1

输入number时它是个字符串,加int是为了之后使用他为整型 我的理解就是转为数字格式,后面while判断True 或 False,如果为True就循环下去

我也刚学,这是我的理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 13:49:30 | 显示全部楼层
这就是个死循环吧...呃,还是来解决疑问吧:
          其实,如果把while number这个语句展开,就是while number == True,也就是说,只要number不等于0,也就是False,就永远不会停下。
          再来解决一下死循环问题:
temp = input("请输入一个整数:")
number = 0
try:
    number = int(number)
    x = True
except:
    print("您输入的值不合法!")
    x = False

if x:
    i = number
    while i:
             i -= 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 14:58:32 | 显示全部楼层
本帖最后由 lixiangyv 于 2020-3-31 15:09 编辑

while 后面就是要加一个 bool (布尔)值,条件返回的都是一个布尔值,
在 Python 中,只要不是 0 的整数,在 Python 眼里,都是 True 。True 或 False 都是 一个布尔值。

int(temp) 的意思就是将 temp 转换成 一个整数,你可能会疑惑,输入的就是整形为什么又要强转成整形呢?
因为 input 函数的返回值是一个字符串类型,是非整型的。就算用户将输入的就是一个数字,返回的也是字符串。

这行代码的作用就是让用户输入一个数字,如果是 0 ,就直接退出,如果不是,那程序就会卡在这,因为 number 再循环体内没有发生变化,所以这个就是一个死循环了。

如果不想让他是死循环就行该将最后一行代码改成 number -= 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 15:16:16 | 显示全部楼层
while  x : 只要 x是除零以外的数字都算True      x =0 时候 算False      
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 17:14:24 | 显示全部楼层
while number 就是 while number != 0,当 number 不为 0 时执行循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 18:01:34 | 显示全部楼层
while后条件为真时就循环
number一直为真时就一直循环
直到number变成0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 18:50:10 From FishC Mobile | 显示全部楼层
input()返回的是一个字符串,所以要转换成整形
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 21:31:05 | 显示全部楼层
int可以方便递增或递减,限制循环的次数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 17:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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