任何人都可以帮助我:
我正在尝试传递文字输入,例如,如果我输入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))
答案 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