Justin6 发表于 2020-3-31 11:48:10

小白关于while的一个小问题,求指点

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

请看论坛里小甲鱼的一串代码的一部分,如下

temp = input('请输入一个整数:')
number = int(temp)
while number:
    i = number - 1

第三行while number:
为什么可以这样用,while后不是加条件吗,为什么加number
且这这代码所表示的意义是什么。

Hello. 发表于 2020-3-31 11:49:13

int强制转换数据为整型

qiuyouzhi 发表于 2020-3-31 11:49:21

和while True的意义一样,只要number为True(不等于0)就继续循环
https://fishc.com.cn/thread-159048-1-1.html
还可以看下这篇帖子

Hello. 发表于 2020-3-31 11:50:29

没看错的话,这是个死循环吧{:10_256:}

永恒的蓝色梦想 发表于 2020-3-31 12:04:46

Hello. 发表于 2020-3-31 11:49
int强制转换数据为整型

int不就是整型么……

raimond 发表于 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。

zhongyuanadler 发表于 2020-3-31 13:32:14

temp = input('请输入一个整数:')
number = int(temp)
while number:
    i = number - 1

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

我也刚学,这是我的理解{:10_254:}

NZND 发表于 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

lixiangyv 发表于 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

Twilight6 发表于 2020-3-31 15:16:16

whilex : 只要 x是除零以外的数字都算True      x =0 时候 算False      

zltzlt 发表于 2020-3-31 17:14:24

while number 就是 while number != 0,当 number 不为 0 时执行循环

_荟桐_ 发表于 2020-3-31 18:01:34

while后条件为真时就循环
number一直为真时就一直循环
直到number变成0

_2_ 发表于 2020-3-31 18:50:10

input()返回的是一个字符串,所以要转换成整形

hyl_0718 发表于 2020-3-31 21:31:05

int可以方便递增或递减,限制循环的次数
页: [1]
查看完整版本: 小白关于while的一个小问题,求指点