Я хочу попросить пользователя ввести значение, а затем распечатать его длину, если ввод является строкой.Если пользовательский ввод является целым или десятичным, я хочу напечатать "Sorry, integers don't have length"
или "Sorry, floats don't have length"
, соответственно.
Я использую исключение при попытке преобразовать ввод в число с плавающей точкой или целое число.
Вот мой код:
c=input("enter a string: ")
def length(c):
return len(c)
try:
float(c)
if float(c)==int(c):
print("Sorry integers don't have length")
else:
print("Sorry floats don't have length")
except:
print(length(c))
Результаты вывода следующие:
> enter a string: sfkelkrelte
11
> enter a string: 21
Sorry integers don't have length
> enter a string: 21.1
4
При вводе целого числа сообщение об ошибке отображается правильно, каквозможно преобразование float ().Но в случае числа с плавающей запятой интерпретатор переходит к блоку except
, хотя он должен был выполнить блок try
.
Почему это происходит?