Python 计算表达式外部为true,内部为false

Python 计算表达式外部为true,内部为false,python,if-statement,types,python-2.x,Python,If Statement,Types,Python 2.x,我很抱歉,如果这是一个重复,但我找不到任何关于这个 (Python 2.7.6) 在本质上,我使用了以下代码的变体: def isnum(a): try: float(a) return True except ValueError: return False 它确定用户输入是否确实是数字 isnum(3) True isnum("3") True 如果我使用以下代码: def input(): while True:

我很抱歉,如果这是一个重复,但我找不到任何关于这个

(Python 2.7.6)

在本质上,我使用了以下代码的变体:

def isnum(a):
    try:
        float(a)
        return True
    except ValueError:
        return False
它确定用户输入是否确实是数字

isnum(3)
True

isnum("3")
True
如果我使用以下代码:

def input():
    while True:
        a = raw_input("Please enter a number:")
        if isnum(a):
            print float(a)
            break
        else:
            print "Please enter only numbers!",a,'is invalid'

input()
我还想指出,我也尝试了
isnum(a)==True

当提示输入“3”时,我收到“仅输入数字”错误提示

Please enter a number:"3"
Please enter only numbers! "3" is invalid

提前感谢。

您将
“3”
作为输入,而不是
3
“3”
是一个包含3的字符串。但是当你把它发送到原始输入时,它变成了
“'3”
,它是由引号包围的3,不是一个数字。

你不应该输入
“3”
,只是
3
float('3“)
不同于
float(“3”)
。另外,
str.isdigit()
是一个内置的,它实现了你的
isnum()
是的。我自己刚意识到。无论如何谢谢你!