为什么python说这个字符串是None类型

为什么python说这个字符串是None类型,python,string,function,error-handling,numbers,Python,String,Function,Error Handling,Numbers,我创建了一个函数,它可以根据类型将字符串转换为数字,当我在字符上使用它时,它会抛出一个错误。这是: def number(numstring): is_number = True for c in numstring: if not c in '123456789.': is_number = False if is_number: if_float = False for c

我创建了一个函数,它可以根据类型将字符串转换为数字,当我在字符上使用它时,它会抛出一个错误。这是:

def number(numstring):
    is_number = True
    
    for c in numstring:
        if not c in '123456789.':
        is_number = False
        
    if is_number:
        if_float = False

        for c in string:
            if c == '.':
                is_float = True
                break

        if is_float:
            return float(numstring)
        else:
            return int(numstring)
else:
    return None
                
下面是错误:

TypeError: object of type 'NoneType' has no len()

我如何修复错误,如果可以,请解释答案。提前谢谢

您的代码中有一些输入错误 试试这个

您也可以使用
尝试
,如下所示

def number(numstring):
    try:
        x = float(numstring)
        return x
    except:
        try:
            x = int(numstring)
            return x
        except:
            return "wasn't a number"
        
print( number("12.23") )

您将变量声明为
if\u float
,但使用的
是\u float
。此外,要将字符串转换为int,您必须先将其转换为float,然后再转换为int

请更新代码的缩进并提供完整的错误回溯。您得到的错误行号是多少?那行代码是什么?哦,是的,我没看到。谢谢你回答这个问题!
def number(numstring):
    try:
        x = float(numstring)
        return x
    except:
        try:
            x = int(numstring)
            return x
        except:
            return "wasn't a number"
        
print( number("12.23") )
def number(numstring):
    is_number = True
    
    for c in numstring:
        if not c in '123456789.':
            is_number = False

    is_float = False
    
    if is_number:
        for c in numstring:
            if c == "." and not is_float:
                is_float = True
                break

        if is_float:
            return float(numstring)
        else:
            return int(float(numstring))
    else:
        return None