def user_input_checker(user_input):

  if isinstance(user_input, int):
      print('user_input is an integer.')

  if isinstance(user_input, float):
      print('user_input is a float point.')

  if isinstance(user_input, str):
      print('user_input is a string')

print('What is your input?')
user_input = input()

print('Input = %s'%user_input)

user_input_checker(user_input)

Я создал код для проверки того, является ли вводимое пользователем число целым, плавающей точкой или строкой, но каждый раз, когда я ввожу целое число или плавающую точку, он все равно выводит, что это строка. Может быть, я упустил что-то очень простое?

NotASuperSpy

Ответов: 1

Ответы (1)

В вашем коде user_input всегда является строкой, поскольку функция input() всегда возвращает значения строки. Это описано в документации Python (выделение мое):

https://docs.python.org/3/library/functions.html#input

Функция считывает строку из ввода, преобразует ее в строку (удаляя концевую новую строку) и возвращает ее. При считывании EOF выдается EOFError.

Правда, в Python нет статически объявленных типов, и в Python есть некоторое жонглирование типами, но переменные Python все еще имеют типы, которые обычно не являются "магическими", и поэтому, если кто-то введет 1.2 в подсказку input(), это все равно будет возвращено в виде строки "1.2", а не десятичного значения.

В заголовке вашего вопроса говорится pay_rate, что звучит как денежное значение. Вы не должны представлять денежные суммы (т.е. валюту, деньги) с помощью типа с плавающей точкой, такого как float. Вместо этого используйте Decimal.

Решение

2022 WebDevInsider