为什么我的'如果'代码!=''当我输入0时返回true,这应该是一个假值?

时间:2018-04-07 21:53:27

标签: python if-statement

这里有新手学习python。在线做一个课程并在这里遇到一些麻烦:

为什么我的'如果'代码!=''当我输入0时返回true,这应该是一个假值?

这是代码

print('Enter a name')
name = input()
if name != '':
    print('Thank you for entering a name, ' + name)
else:
    print('You didn\'t enter a name')

输出结果为:

Enter a name
0
Thank you for entering a name, 0

这怎么会是假的?

3 个答案:

答案 0 :(得分:1)

你没有0,你有'0',长度为1的字符串。任何非空字符串都被认为是真的:

>>> name = input()
0
>>> name
'0'
>>> len(name)
1
>>> type(name)
<class 'str'>
>>> bool(name)  # truth value
True

因为它是一个包含单个字符的字符串,所以它也不等于'',空字符串和if name != '':测试通过。

你有一个字符串,因为在Python 3中,input()总是返回字符串。

如果您的int对象的值为0,那么是的,它将是假y:

>>> falsey = 0
>>> type(falsey)
<class 'int'>
>>> bool(falsey)
False

您必须将字符串转换为整数:

>>> int(name)
0
>>> type(int(name))
<class 'int'>
>>> bool(int(name))
False

但是,当您要求某人名称时,转换为整数并不是很有意义。名称是 text ,而不是数字。

因此,除非您有明确的具体理由进一步验证用户输入的内容以检查该值是否为实际名称,否则此处测试数字0没有意义。坚持你所拥有的,也许只需使用:

if name:
    # ... name is not empty

答案 1 :(得分:0)

input()函数将0作为名称,而你的名字是&#39; 0&#39;, 而不是&#39;。更常见的方法是:

if len(name) > 0:
    print('Thank you for entering a name, ' + name)
else:
    print('You didn\'t enter a name')

答案 2 :(得分:0)

试试这个:

patternsearch