Из документации 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