Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиПоискОблакоVK ComboВсе проекты

Определить, является ли она целым числом, действительным числом или текстом. ПИТОН

t14n Ученик (193), закрыт 3 месяца назад
С клавиатуры вводится некоторая группа символов определить является ли она целым числом, действительным числом или текстом.
Лучший ответ
Aleks Nots Просветленный (21687) 4 месяца назад
Вообще-то "С клавиатуры введенная некоторая группа символов " - всегда является типом str.
А вот если требуется узнать можно ли эту str преобразовать в int, или во float, то по-моему так:

def int_float_str(s):
~~~~try:
~~~~~~~~int(s)
~~~~~~~~return 'int'
~~~~except:
~~~~~~~~try:
~~~~~~~~~~~~float(s)
~~~~~~~~~~~~return 'float'
~~~~~~~~except:
~~~~~~~~~~~~return 'str'

s = input()
print(int_float_str(s))
Дед МазайГений (57872) 4 месяца назад
Работать конечно будет, но по-моему, некрасиво использовать исключения для чего-то кроме обработки ошибок.
Aleks Nots Просветленный (21687) Дед Мазай, " некрасиво использовать исключения для чего-то кроме обработки ошибок." Ну тогда только делать полный синтаксический анализ строки абсолютно идентичный тому, который используется внутри самого питона. В идеале как-то выковырять этот анализ из внутренностей питона и поместить в свою функцию. Чтобы результат был всегда идентичный питоновскому. Я например не знаю как это сделать. У Вас есть какие-нибудь варианты как это сделать? Для float не забыть про '-123.456e-78' и 'inf', а может и еще какие-нибудь редкоиспользумые есть про которые я забыл.
Остальные ответы
Dsibe Мастер (1239) 4 месяца назад
num = input(': ')
if num.isdigit():
print('Целое!')
elif num.isdecimal():
print('действительное!')
else:
print("Просто текст")

Табы сам поставишь)
Дед МазайГений (57872) 4 месяца назад
isdecimal работает так же, как isdigit. Или я не заметил отличий. Обе не работают с отрицательными числами.
Дед Мазай, а зачем отрицательные, сразу от ввода взять модуль и продолжить по описанному выше, заодно последнее else заменить на вывод ошибки в случае неудачного взятия модуля от набора символов
DsibeМастер (1239) 4 месяца назад
тогда замени isdecimal на try: float(num) except: pass
Макар Пензин Знаток (354) 4 месяца назад
(x) = input()
try:
````int(x)
````print("это целое число")
````input()
except ValueError:
````try:
````````float(x)
````````print("это действительное число")
````````input()
````except ValueError:
````````print("Это текст")
````````input()
Если что вместо ` ставь пробел.
Макар ПензинЗнаток (354) 4 месяца назад
Очень простой код. Работает просто.
Похожие вопросы