Python 如何按原样输入变量(例如:#10不应为字符串)
有人能帮我做以下事情吗 我正在尝试传递文本输入,例如,如果我输入10,函数应该用int传递,但在下面的例子中,它仍然是传递字符串 任何人都可以编辑此代码以按输入类型传递吗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
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类型的智能方法。虽然我仍然没有尝试,除了在我的培训中,我理解了代码。很高兴能帮助,很高兴编程!