В Python 3.x как прочитать любое число, а затем вернуть половину числа? - PullRequest
0 голосов
/ 29 января 2019

Я хочу попросить пользователя ввести число, которое может быть числом с плавающей запятой, целым и комплексным числом, но Python 3 считает его строкой, если я использую функцию ввода.Если я не знаю, какой тип номера будет вводить пользователь, как рассчитать половину введенного числа?

Ответы [ 2 ]

0 голосов
/ 29 января 2019

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

try:
    num = complex(input('Enter something: '))
except ValueError:
    print('Invalid input')

if num.imag:
   print(num / 2)
else:
   print(num.real / 2)

Другой вариант - вложенный try - except:

num = input('Enter something: ')

try:
    print(int(num) / 2)
except ValueError:
    try:
        print(float(num) / 2)
    except ValueError:
        try:
            print(complex(num) / 2)
        except ValueError:
            print('Invalid input')
0 голосов
/ 29 января 2019

Вы можете использовать ast.literal_eval для безопасной интерпретации строк, как если бы они были литералами Python:

from ast import literal_eval

print(type(literal_eval("1")))  # <class 'int'>
print(type(literal_eval("1.0")))  # <class 'float'>
print(type(literal_eval("1+1j")))  # <class 'complex'>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...