为什么我的'如果'代码!=''当我输入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
这怎么会是假的?
答案 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