Классифицируйте, является ли число int или float с функцией ввода.Что я делаю неправильно? - PullRequest
0 голосов
/ 31 декабря 2018

Ребята, я новичок в мире программирования и прилагаю все усилия для изучения Python.

Я застрял с этой проблемой прямо сейчас:

"Создайте алгоритм, который проверяет, является ли определенное значение целым числом."

Теперь проблема в том, что функция INPUT возвращаеттип в строке.Если я приведу переменную к FLOAT, это помешает мне прочитать целые числа.

Что мне делать?

val1 = float(input("enter value")
if type (val1)== int:
print("value is integer")
else:
print("value is NOT integer")

Ответы [ 5 ]

0 голосов
/ 31 декабря 2018

Если вы не хотите приведения и обработки ошибок.Вы можете использовать ast.literal_eval для преобразования строки в объекты Python и isinstance, который поставляется вместе с Python, для решения вашей проблемы.

from ast import literal_eval


in_val = input('Enter value: ')

# get literal value

l_val = literal_eval(in_val)

# check if it is int
if isinstance(l_val,int):
    print('It is integer')
elif isinstance(l_val,float):
    print('It is a float')
elif isinstance(l_val,str):
    print('It is a string')

else:
    print('Not int,float or string')# could be list, dict etc ;)
0 голосов
/ 31 декабря 2018

Если вы хотите, чтобы ввод, например '3.0', распознавался как целые числа (так что все целые числа вместо всех значений типа int), просто вызвать int для этого недостаточно, поскольку int не можетпарсит эту строку.

Другой способ определить, является ли значение целым числом, это посмотреть, есть ли остаток, если он разделен на единицу, так что вы можете использовать оператор по модулю %:

val1 = float(input("enter value"))
if val1 % 1 == 0:
    print("value is integer")
else:
    print("value is NOT integer")
0 голосов
/ 31 декабря 2018

Вы можете попытаться преобразовать ввод строки в целое число или число с плавающей запятой:

k = input("enter value:")
try:
    k = int(k)
    # it is an integer
except ValueError:
    try:
        k = float(k)
    except ValueError:
        print("Neither int nor float")
    else:
        print(k, "is a float")
else:
    print(k, "is an integer")

Вывод:

enter value:44.4
44.4 is a float

enter value:hallo 
Neither int nor float

enter value:44
44 is an integer

Доку:

0 голосов
/ 31 декабря 2018

Вы можете использовать try и except для этого (вы можете взглянуть на Ошибки и исключения . Попробуйте превратить input в int и напишите соответствующий отпечатокзаявления в зависимости от результата:

val1 = input("enter value")
try:
    int(val1)
    print("value is integer")
except:
    print("value is NOT integer")
0 голосов
/ 31 декабря 2018
if val1.count('.') == 0:
   print("value is NOT integer")
else:
   print("value is integer")
...