Python 为什么我的';如果';使用代码!='';当我输入0时返回true,这应该是一个假值?
新手在这里学习python。在网上学习课程时遇到了一些问题: 为什么我的“如果”代码与!=''一起使用当我输入0时返回true,这应该是一个假值 这是密码Python 为什么我的';如果';使用代码!='';当我输入0时返回true,这应该是一个假值?,python,if-statement,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 Tha
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
,您有'0'
,一个长度为1的字符串。任何非空字符串都被视为true:
>>> name = input()
0
>>> name
'0'
>>> len(name)
1
>>> type(name)
<class 'str'>
>>> bool(name) # truth value
True
您必须将字符串转换为整数:
>>> int(name)
0
>>> type(int(name))
<class 'int'>
>>> bool(int(name))
False
input()函数将您的0作为名称,然后您的名称为“0”,
而不是“”。更常见的方法是:
if len(name) > 0:
print('Thank you for entering a name, ' + name)
else:
print('You didn\'t enter a name')
试试这个:
import re
name = input()
if re.match('[a-zA-Z]+', name): # returns None if not match, a match object otherwise.
print("Thank you for entering your name, {}.".format(name))
else:
print("Oops! You didn't entered a valid name.")
这都是真的,但即使他们有
0
,它也不等于'
。如果我输入:int(0)而不是0会发生什么?是的,这就是他们实际代码输出的原因*谢谢…,0`我如何使其返回false?@lsebrary:name!='当您输入0
时,0'
将返回false。但同样,如果您只想知道用户是否输入了名称,那么这不是一个很好的测试。谁能说'0'
不是一个名字呢?0,这应该是一个虚假的值,你没有测试名字的真实性;您正在测试它是否为空字符串。换句话说,False
也不等于'
。只有当您将某个内容强制转换为布尔值时,它是否为False才相关。这里没有这样的演员阵容bool(int(input))
将随着input='0'
而变为False
,bool('')
。什么是有效名称?或者如果name:
反勾用于小于一行的代码段,则只需。四个空格缩进应该用于整行或多行代码块——请参见我的编辑。这样可以突出显示语法,彩色背景一直延伸到右边缘。@LseLibrary:如果名称:
,如果名称!='':
和如果len(name)>0:
都测试相同的东西,如果name
始终是字符串。但是,如果name:
是Pythonic形式。
if len(name) > 0:
print('Thank you for entering a name, ' + name)
else:
print('You didn\'t enter a name')
import re
name = input()
if re.match('[a-zA-Z]+', name): # returns None if not match, a match object otherwise.
print("Thank you for entering your name, {}.".format(name))
else:
print("Oops! You didn't entered a valid name.")