Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.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 使用条件语句的语义错误_Python_Python 3.x - Fatal编程技术网

Python 使用条件语句的语义错误

Python 使用条件语句的语义错误,python,python-3.x,Python,Python 3.x,我试图构建一个执行字符串长度的代码 这段代码应该只能接受字符串并返回它们的长度,但当给定整型值或浮点值时,它也会计算它们的长度 def length(string): if type(string)== int: return "Not Available" elif type(string) == float: return "Not Allowed" else: return len(string) string=inp

我试图构建一个执行字符串长度的代码

这段代码应该只能接受字符串并返回它们的长度,但当给定整型值或浮点值时,它也会计算它们的长度

def length(string):
    if type(string)== int:
        return "Not Available"
    elif type(string) == float:
        return "Not Allowed"
    else:
        return len(string)
string=input("Enter a string: ")
print(length(string))
输出:

Enter a string: 45
2

您希望为输入
45
获得输出
“不可用”
。但这不会发生,因为,
从键盘读取输入时,默认类型为字符串。因此,输入
45
的类型为
str
。因此,您的代码给出了输出
2

输入
返回一个字符串,因此如果您检查其类型,它将始终是字符串。要检查它是int还是float,您必须尝试将其强制转换

try:
    int(input)
except ValueError:
    # not an int
    return "Not Available"

try:
   float(input)
except ValueError:
    # not a float
    return "Not Allowed"

return len(string)