Python 如何按原样输入变量(例如:#10不应为字符串)

Python 如何按原样输入变量(例如:#10不应为字符串),python,input,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

有人能帮我做以下事情吗

我正在尝试传递文本输入,例如,如果我输入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))
从文件中可以看出:

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

无论何时输入,它都是一个字符串,因此
type
不会给出所需的结果

但是,您可以通过使用
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

不要将
string
用作变量名。如果他们想以字符串的形式输入
'10'
,又该怎么办呢?嗨,克里斯,我只是想用这个程序来输入这个类型的文本。我将变量名改为str,谢谢。哦,不,
str
是比
string
更糟糕的名称,它覆盖了内置类型。如果您想要一个简单的名称,请使用类似于
s
的内容。测试值类型的正确方法是使用
isinstance(s,int)
,而不是
type(s)==int
。您还应该在Python 2中使用
raw\u input
而不是
input
,然后尝试显式转换
s
int(s)
float(s)
,等,根据需要捕获
ValueError
。谢谢大家,将尝试您的建议,刚刚开始学习Python:)谢谢Chris,上面的代码起作用了。确定传递值E类型的智能方法。虽然我仍然没有尝试,除了在我的培训中,我理解了代码。很高兴能帮助,很高兴编程!