Преобразовать данный ввод из строки в целое число или число с плавающей запятой в Python, и если ввод является строкой или символом, он может это обработать? - PullRequest
0 голосов
/ 18 декабря 2018

входы: 'aa', '22', '2.45'

input ='22'
try:
   print int(input)
except ValueError:
   print float(input)

Как обрабатывать приведенный выше код, когда ввод «aa» или «example»?

Ответы [ 3 ]

0 голосов
/ 18 декабря 2018
s = 'aa'

try:
   print int(s)
except ValueError:
   try:
      print float(s)
   except:
      print 'its is a string'
0 голосов
/ 18 декабря 2018

Вы должны использовать str.isalpha

Единственный раз, когда это происходит в таких случаях, как input = 'a2'.

inputs = ['aa','22','2.45']

for input in inputs:
   if not input.isalpha():
      try:
         print int(input)
      except ValueError:
         print float(input)
0 голосов
/ 18 декабря 2018

Я думаю, что самый простой способ справиться с этим - проверить, является ли входная строка сначала числовой:

https://www.tutorialspoint.com/python/string_isnumeric.htm

if input.isnumeric():
    print int(input)
else:
    try
        print float(input)
    except ValueError:
        # Do nothing

Однако, если вы можете полностью избежать исключений, используйте кодбыло бы лучше - обработка исключений может быть довольно дорогой.

Этот ответ на тестирование целого числа объясняет, почему обработка исключений может быть дорогой: https://stackoverflow.com/a/9859202/8358096

Чтобы избежать повторного попадания во второе исключение, выможет использовать функцию isalpha, упомянутую ниже.

if input.isnumeric():
    print int(input)
else:
    if not input.isalpha():
        try
            print float(input)
        except ValueError:
            # Do nothing
...