Тебе нужно
повторять ввод аргументов, пока пользователь не введёт их правильно? Ну вот и повод почитать про циклы.
while True: # бесконечный цикл
x_str = input('Введите x:') # вводим число
try: # внутри блока try мы будем отлавливать ошибки - исключения
x = float(x_str) # пробуем преобразовать строку в число
except ValueError: # в случае чего float() выкинет исключение ValueError
print(x_str, 'это не число. Попробуйте ещё раз.') # сообщаем пользователю
else: # если ошибки не было
break # то прерываем цикл, у нас в x лежит нужное значение
# мы делаем break только в ветке else - значит, пока отрабатывает ветка except, цикл продолжится
В принципе, если тебе нужна только одна попытка, ты можешь вытащить блок try-except из цикла, убрать ветку else, и заменить ветку except на что-то типа:
except ValueError:
print(x_str, 'это не число. У вас есть ещё одна попытка') # сообщаем пользователю
x_str = input('Введите x: ')
x = float(x_str)
Тогда получится обойтись без циклов.
Но без try-except обойтись сложнее. Да, ты можешь предварительно проверить строку на соответствие шаблону десятичного дробного числа, но честно? try-except куда проще, так что стоит его освоить. Главное - не "глотай" ошибки, реагируй на них.