Проверка правильности ввода Python - не if-else, isdigit или try - PullRequest
0 голосов
/ 31 октября 2019

Был экзамен и не мог понять это. Мы можем использовать только то, что узнали.

So Проверка ввода без использования операторов if elif или if-else Проверьте, является ли input числом. Мы не рассмотрели попытку или isdigit. Любой другой путь?

Ответы [ 3 ]

1 голос
/ 31 октября 2019

Убедитесь, что входные символы являются подмножеством цифровых символов

set(input()) <= set(map(str, range(10)))
0 голосов
/ 31 октября 2019

Еще один небольшой, но неполный подход:

def check(x):
    if x[0] =='-':
        s = set(x[1:])
        return s.issubset('0123456789.')
    else:
        s = set(x)
        return s.issubset('0123456789.')

x = input('? ')
while not check(x):
    x = input('? ')
print(float(x)**2)

Работает с целыми или отрицательными числами или отрицательными числами.
Не с научной нотацией и вылетает с глупостью, используя только допустимые символы типа 1.2.3.4.5 .. .

0 голосов
/ 31 октября 2019

Из-за недостатка информации, если у вас есть представление об ascii. Это наивное решение, но это все, что я могу предположить, что вы знаете. Вы можете получить значение ASCII каждого символа, используя функцию ord() в python.

Что вы можете сделать, это прочитать входные данные в виде строки, перебрать каждый символ и проверить, находится ли он в допустимом диапазоне ASCII0-9. если условие не выполняется даже для одного символа, вернуть false. Опять же, это определенно не лучшее возможное решение. Код:

string = input()
for i in a:
     if ord(i) not in range(48,58):
             print('Not a number')
             break
 else:
     print('Is a number')

Кроме того, это можно сделать только двумя строками, но полное написание может помочь вам легче понять логическую часть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...