Как вывести сообщение в функции и начать функцию с начала 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)