Почему не работает функция return float(value) (не возвращает переменную другого типа)?
Помогите, пожалуйста!
Хочу функцию, изменяющую тип переменной, получаемой через input в формате str на тип float.
def num (x):
while isinstance(x, str):
try:
return float(x)
except ValueError:
input ("one more time")
break
a = input ("Go: ")
num (a)
print (a)
print (type (a))
По итогу, несмотря на то, что я ставлю return float(x), вывод при помощи print (type (a)) показывает, что тип данных введенной пользователем строки все равно остается str. Подскажите , как реализовать задамунное и возможно ли это?
Ответы (1 шт):
Автор решения: Евгений
→ Ссылка
Мне такой вариант не подходит, нужно чтобы именно функция
numконвертировала тип данных во флоат, а если пользователь введет неконвертируемые данные, например, текст, то вылезал быinput ("one more time"), для того, чтобы он ввел именно число
Решение с рекурсией
def num(x):
try:
return float(x)
except:
return num(input('one more time '))
a = 2
b = '3'
c = '3aw3'
print(num(a))
print(num(b))
print(num(c))
Результат:
2.0 # вывод float(2) - успех
3.0 # вывод float('3') - успех
one more time 5da2 # вывод float('3aw3') - неудача. Повторный ввод
one more time 54d # вывод float('5da2') - неудача. Повторный ввод
one more time 4 # вывод float('54d') - неудача. Повторный ввод
4.0 # вывод float('4') - успех
Решение без рекурсии
def numinput(*args):
try:
return float(input(*args))
except:
while 1:
try:
return float(input("one more time "))
except:
pass
a = numinput("Введите число ")
print(a)
Результат:
Введите число 412в2
one more time -3
-3.0