在python中检查用户输入是否为int,为什么这段代码可以工作?
我刚开始编写和学习python。。。我试图检查输入是否是一个数字。3年前,我从一个不活跃的帐户中找到了一个很好的答案,如下所示:在python中检查用户输入是否为int,为什么这段代码可以工作?,python,python-2.7,Python,Python 2.7,我刚开始编写和学习python。。。我试图检查输入是否是一个数字。3年前,我从一个不活跃的帐户中找到了一个很好的答案,如下所示: a=(raw_input("Amount:")) try: int(a) except ValueError: try: float(a) except ValueError: print "This is not a number" a=0 if a==0: a=0 else:
a=(raw_input("Amount:"))
try:
int(a)
except ValueError:
try:
float(a)
except ValueError:
print "This is not a number"
a=0
if a==0:
a=0
else:
print a
#Do stuff
我的问题是,如果a==0,从到最后到底发生了什么?我可以看出,如果我把它拿出来,所有的输入都会被打印出来,即使它不是一个数字
但这段代码究竟是如何阻止非数字条目被打印出来的呢
谢谢 “==”操作符测试变量指向的对象是否相同。在本例中,“0”是常量。如果你稍微重写一下,会更有意义:
a=(raw_input("Amount:"))
not_a_number = 0;
try:
int(a)
except ValueError:
try:
float(a)
except ValueError:
print "This is not a number"
a=not_a_number
if a==not_a_number:
a=0
else:
print a
#Do stuff
“==”运算符测试变量指向的对象是否相同。在本例中,“0”是常量。如果你稍微重写一下,会更有意义:
a=(raw_input("Amount:"))
not_a_number = 0;
try:
int(a)
except ValueError:
try:
float(a)
except ValueError:
print "This is not a number"
a=not_a_number
if a==not_a_number:
a=0
else:
print a
#Do stuff
它之所以能工作是因为a=0
如果它既不是浮点也不是整数,则将a
设置为0。然后,它检查a==0
a
是否等于0,如果不等于0,则将打印输入。使用try…except…else
语法的更好版本:
a=raw_input("Amount:")
try:
float(a)
except ValueError:
print "This is not a number"
else:
print a
#Do stuff
这里有一个有趣的版本:)
它之所以能工作是因为a=0
如果它既不是浮点也不是整数,则将a
设置为0。然后,它检查a==0
a
是否等于0,如果不等于0,则将打印输入。使用try…except…else
语法的更好版本:
a=raw_input("Amount:")
try:
float(a)
except ValueError:
print "This is not a number"
else:
print a
#Do stuff
这里有一个有趣的版本:)
最后一个if
语句的要点是确保在输入不是数字的情况下不打印任何内容
如果输入不是数字,try/except
确保输入设置为0
。然后,如果输入为0
(如果输入最初不是数字),则不会打印出来
但是,如果输入的值实际上是0
,我建议将代码更改为以下内容:
a=(raw_input("Amount:"))
try:
int(a)
except ValueError:
try:
float(a)
except ValueError:
print "This is not a number"
a=None
if a is not None:
print a
最后一个if
语句的要点是确保在输入不是数字的情况下不打印任何内容
如果输入不是数字,try/except
确保输入设置为0
。然后,如果输入为0
(如果输入最初不是数字),则不会打印出来
但是,如果输入的值实际上是0
,我建议将代码更改为以下内容:
a=(raw_input("Amount:"))
try:
int(a)
except ValueError:
try:
float(a)
except ValueError:
print "This is not a number"
a=None
if a is not None:
print a
如果有人想知道的话,我最终综合了我所学到的知识,并做了以下工作:
answer = (raw_input("gimme a number: "))
def is_numeric(number):
try:
int(number)
return True
except ValueError:
try:
float(number)
return True
except ValueError:
print "that ain't a number"
return False
def reply(number):
if is_numeric(number):
print "%s is a good number" % number
reply(answer)
(我现在正在练习函数。)谢谢你帮助我理解我所看到的 如果有人想知道的话,我最终综合了我所学到的知识,并做了以下几点:
answer = (raw_input("gimme a number: "))
def is_numeric(number):
try:
int(number)
return True
except ValueError:
try:
float(number)
return True
except ValueError:
print "that ain't a number"
return False
def reply(number):
if is_numeric(number):
print "%s is a good number" % number
reply(answer)
(我现在正在练习函数。)谢谢你帮助我理解我所看到的 您是否尝试过输入0
作为您的输入(数值)?您所发现的根本不是一个很好的答案。如果a==0:a=0,则该看起来特别像是由某个有点困惑的人编写的。从异常中删除a=0。它会更改变量的值。它使用0,底部有代码和没有代码。我确实找到了很多答案,但这是唯一一个在2.7中有效的答案。。。在3中似乎更容易做到这一点。请澄清您想要的是浮点
(可以有小数)还是整数
(不允许有小数)。您是否尝试过输入0
作为输入(数值)?您所发现的根本不是一个很好的答案。如果a==0:a=0,则该看起来特别像是由某个有点困惑的人编写的。从异常中删除a=0。它会更改变量的值。它使用0,底部有代码和没有代码。我确实找到了很多答案,但这是唯一一个在2.7中有效的答案。。。在3中,这似乎更容易做到。请澄清您想要的是float
(可以有小数)还是int
(不允许有小数)。仍然不确定转换为int
和float
的意义。如果输入为1.1(float),int(a)将引发异常,而float(a)@khelwoodSo如果你想继续尝试float
,为什么还要麻烦int
呢?如果用户输入为0,它会被打印出来,所以输入0的数量就行了。用户输入不是int,而是字符串。仍然不确定转换为int
和float
的目的是什么。如果输入为1.1(float),int(a)将引发异常,而float(a)@khelwoodSo如果你想继续尝试float
,为什么还要麻烦int
呢?如果用户输入为0,它会被打印出来,所以输入0的数量就行了。用户输入不是一个int,而是一个字符串。只有当我们假设在代码的其余部分无效输入将被视为零(如果它是一个数量,这是有意义的)时,这才有效。否则,您可能应该执行而不是\u a_number=“invalid input”
。这只适用于我们假设对于代码的其余部分,无效输入将被视为零(如果它是一个数量,这是有意义的)。否则,您可能应该执行而不是\u a\u number=“无效输入”
。