Python 根据输入类型(float/int/str)返回语句

Python 根据输入类型(float/int/str)返回语句,python,python-3.x,input,types,casting,Python,Python 3.x,Input,Types,Casting,我是python编码的初学者,在一个特定的练习中偶然发现了一个问题。本练习涉及向用户询问输入字符串并打印出字符串的长度。如果用户输入一个int,它应该说“你不能计算int的长度”,如果用户输入一个float,它应该说“你不能计算int的长度”。这是我的密码 def string_length(mystring): if mystring.isdigit(): return "You can not calculate that length!" if isi

我是python编码的初学者,在一个特定的练习中偶然发现了一个问题。本练习涉及向用户询问输入字符串并打印出字符串的长度。如果用户输入一个int,它应该说“你不能计算int的长度”,如果用户输入一个float,它应该说“你不能计算int的长度”。这是我的密码

def string_length(mystring):
     if mystring.isdigit():
         return "You can not calculate that length!"
     if isinstance(mystring,float):
         return "You can not calculate that length!"
     else:
         return len(mystring)

mystring = input("Enter some random string ")
print(string_length(mystring))
这不会打印出任何错误,但当我输入浮点作为输入时,函数本身不起作用。我试过了

type(mystring) == int/float    

但它不起作用。如何修改代码以解决此问题

误解是内置的
输入
给出了一个依赖于输入值的类型。这不是真的。它总是在Python 3.x中提供字符串/
str
输出

测试潜在非字符串输入的一种方法是尝试转换为
float
。如果成功,
打印您的错误消息。如果未成功,请计算并
返回字符串的长度:

def string_length(mystring):
    try:
        float(mystring)
        return 'You cannot calculate the length of a number'
    except ValueError:
        return len(mystring)

mystring = input("Enter some random string ")
print(string_length(mystring))

误解是内置的
输入
给出了一个依赖于输入值的类型。这不是真的。它总是在Python 3.x中提供字符串/
str
输出

测试潜在非字符串输入的一种方法是尝试转换为
float
。如果成功,
打印您的错误消息。如果未成功,请计算并
返回字符串的长度:

def string_length(mystring):
    try:
        float(mystring)
        return 'You cannot calculate the length of a number'
    except ValueError:
        return len(mystring)

mystring = input("Enter some random string ")
print(string_length(mystring))

更好的方法是提出
ValueError
TypeError
。请参见:
len(3.14)
len(3)
一个更好的方法是提出
ValueError
TypeError
。自己看:
len(3.14)
len(3)