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

时间:2018-10-16 15:36:13

标签: python python-3.x types

我是python编码的初学者,偶然发现了一个特定练习的问题。此练习涉及向用户询问输入字符串并打印出字符串的长度。如果用户键入一个int,则应说“您不能计算int的长度”,如果用户输入一个浮点数,则应说“您不能计算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    

,但是它不起作用。如何修改我的代码以解决此问题?

1 个答案:

答案 0 :(得分:2)

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

可以测试进行潜在的非字符串输入的一种方法是尝试转换为float。如果成功,则print错误消息。如果不成功,则计算并return字符串的长度:

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))