如何使用文字条目创建变量输入(例如:#10不应该是字符串)

时间:2018-05-04 17:52:48

标签: python input

任何人都可以帮助我:

我正在尝试传递文字输入,例如,如果我输入10,则函数应该使用int传递,但在下面的情况下,它仍然传递字符串。

任何人都可以编辑此代码,以便按照输入的类型传递代码吗?

def str_len(s):
    if type(s) == int:
        return "You entered Integer, Please enter strings only to get length"
    elif type(s) == float:
        return "You entered float, Please enter strings only to get length"
    else:
        return len(s)

string = input("Enter a string to find its length: ")
print(str_len(string))

1 个答案:

答案 0 :(得分:1)

从文档中input

  

从输入读取一行,将其转换为字符串(剥离尾随换行符),然后返回

每当你输入一个输入时,它都是一个字符串,所以type(s)不会给你你想要的结果。

但是,你可以通过使用try/except块来尝试转换为特定类型来解决这个问题,如果没有引发错误,你就知道字符串包含的有效类型。

def try_as_type(t, v):
  try:
    t(v)
    return True
  except:
    return False

def check(s):
  if try_as_type(int, s):
    return "You entered an integer"
  elif try_as_type(float, s):
    return "You entered a float"
  else:
    return len(s)

样品运行:

>>> Please enter a value:  10
You entered an integer

>>> Please enter a value:  1.43
You entered a float

>>> Please enter a value:  hello there
11