使用条件语句的语义错误

时间:2018-12-31 04:49:34

标签: 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=input("Enter a string: ")
print(length(string))

输出:

Enter a string: 45
2

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

input返回一个字符串,因此,如果检查其类型,它将始终为字符串。要检查它是否为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)