Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中检查用户输入是否为int,为什么这段代码可以工作?_Python_Python 2.7 - Fatal编程技术网

在python中检查用户输入是否为int,为什么这段代码可以工作?

在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:

我刚开始编写和学习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:
    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=“无效输入”