Если оператор get пропущен, в то время как печатается только оператор else. И как мне сохранить строку или int в одной переменной?

Я пытался выполнить упражнение, которое попросило нас решить следующую проблему. Упражнение "Образ задачи", которое я пытался выполнить, но не используя те же ключевые слова, которые показаны в упражнении.

Вот мой код

def StringLength(length_of_String):
    return len(text)

text = input("length_of_String :")

if type(text) == int:
    print ("python doesn't show length of integers")
else :
    print (len(text))

Но проблема, которую я здесь получаю, заключается в том, что, если я добавлю какой-нибудь текст, скажем, как "Джокер". Это выведет мне длину как "5", что правильно.

Но когда я набираю любое целое число или число с плавающей точкой, скажем "101", он все равно печатает его длину как "3", потому что он читает его как строку.

Так почему же я добавил переменную, в которой при вводе целого числа или строки он должен распознавать ее как строку или целое число?

1 ответ

Решение

some_variable = input() по умолчанию выдаст вам строку. Вы можете изменить свой код:

def is_number(s):
try:
    float(s)
    return True
except ValueError:
    return False

def StringLength():
    text = input('Enter:')
    if is_number(text):
        print ("python doesn't show length of integers")
    else :
        return(len(text))

#StringLength() #Remove the '#' at the start of the line to test the function

Изменить: я добавил функцию для проверки, является ли введенное значение числом или нет

Другие вопросы по тегам