Пользовательская функция: преобразование строковых входов в число с плавающей запятой после ввода

1

Я пытаюсь преобразовать строковый ввод в float после ввода ввода. Оставляя возможность сделать что-то со входом, если это строка. Я пробовал некоторые вещи, но они возвращают следующую ошибку:

"TypeError: не может умножить последовательность на non-int типа" float "в строке 8"

Ниже приведен код, который работает, но я хочу сохранить ввод строки и преобразовать в float после ввода:

def computepay(h,r):
    if h<=40:
        return h*r
    else:
        return h*r+((h-40)*b)
h = float(input("Enter Hours:"))
r = float(input("Enter Rate:"))
b = 0.5*r
p = computepay(h,r)
print(p)

Как это будет сделано правильно?

Спасибо!

  • 0
    Оставить это как строку и конвертировать только в плавающие, когда вам это нужно? Я не совсем уверен, что вы спрашиваете здесь ... с какой именно проблемой вы сталкиваетесь, так как я не могу понять, как этот код приведет к этой ошибке ...
  • 0
    Просто чтобы держать это открытым, в будущем я мог бы захотеть посмотреть, как дать нецифровые числа в качестве входных данных можно распознать или преобразовать в число с плавающей точкой; например, «сотня» распознается как «100» и рассматривается как таковая в последующих строках. Ошибка возникает, когда я, например, делаю следующее: float (h) & float (r) после строк ввода.
Теги:
string
python-3.x
input

1 ответ

1
Лучший ответ

Вы можете конвертировать в float как отдельный шаг и создавать новые переменные для хранения ваших значений float. Это оставит исходные входы в виде строк.

h = input("Enter Hours:")
r = input("Enter Rate:")

h_float, r_float = map(float, (h, r))

b = 0.5 * r_float
p = computepay(h_float, r_float)

Кроме того, вы можете использовать более подробный синтаксис:

h_float = float(h)
r_float = float(r)
  • 0
    Большое спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню