Как вывести сообщение в функции и начать функцию с начала Python

Нужно вывести сообщение об ошибке и начать функцию с начала, если пользователь вводит не число, а буквы или иные символы. Можно ли это сделать с типом данных Float?

def inpt ():
    while True:
        a = input('Введите целое положительное число: ')
        if a.isdigit():
            return a
        else:
            print('Ошибка')
a = inpt()
print(a)d

Ответы (2 шт):

Автор решения: ПИТОНИСТ версия-3-8

Вот так можно (с обработкой исключений):

def inpt ():
    while True:
        a = input('Введите целое положительное число: ')
        try:
            a=float(a)
            return a
        except ValueError: print('Ошибка')
a = inpt()
print(a)

Или с replace():

def inpt ():
    while True:
        a = input('Введите целое положительное число: ')
        if a.isdigit or a.replace('.', '', 1).isdigit(): return a
        else: print('Ошибка')
print(inpt())
→ Ссылка
Автор решения: Semyon Pankratov

Вот такой способ проверки можно использовать без while True, и проверок на исключения.

all = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '.']

def inpt ():
    x = input('Число: ')
    for i in range(len(x)): # идем циклом по строке
        if x[i] not in all: # тут если есть значение которое не входит в список, то ведет к сообщению об ошибке
            print('Ошибка: некорректное значение')
            return '0'
    return x # если все впорядке, то возвращает число

def While(): # здесь идет условие: пока мы не введем корректное знаенчие, нас будет возвращать к ошибке
    a = '0'
    while a == '0':
        a = inpt()
    return float(a) # перевод и возврат строки

a = While()
print(a)
→ Ссылка