#python #string #function #valueerror
#python #строка #функция #ошибка значения
Вопрос:
У меня есть набор инструкций:
Создайте вызываемую функцию format_change
, которая принимает строку, подобную строке в столбце Изменения, и выполняет следующее:
- Если последний символ является
%
знаком, удалите его - преобразуйте строку в число с плавающей запятой
- если это число с плавающей запятой положительное, умножьте его на 100
- возвращает результирующее значение с плавающей запятой
Это мой код:
def format_change(string):
if string[-1] == "%":
string = string[-1]
str_as_float = float(string)
if str_as_float > 0:
str_as_float = str_as_float * 100
return str_as_float
тем не менее, когда я ввожу функцию
format_change(0.45%)
Он возвращает вывод:
Ошибка значения: не удалось преобразовать строку в float: ‘%’
Что я могу сделать, чтобы преобразовать его правильно?
Комментарии:
1. Проверьте, как работает нарезка здесь . Также вы могли бы использовать
str.replace('%','')
для удаления%
знака.2. Это еще один хороший способ! Я обязательно использую это в следующий раз. это сэкономило бы мне драгоценное время. Большое спасибо!
Ответ №1:
Вы присваиваете строку '%'
своей переменной, но вам нужно все, кроме этого символа. Измените начало вашей функции на:
def format_change(string):
if string[-1] == "%":
string = string[:-1] # added ':'
Ответ №2:
Попробуйте это:
def format_change(string):
if string[-1] == "%":
string = string[:-1]
str_as_float = float(string)
if str_as_float > 0:
str_as_float = str_as_float * 100
return str_as_float
print(format_change('0.45%'))
Ответ №3:
Если вы ищете однострочную строку, вы можете использовать это:
def format_change(string):
return float(string.replace('%',''))*100 if float(string.replace('%',''))>0 else float(string.replace('%',''))
format_change("-50%")
# -50.0
format_change("50%")
# 5000.0
Ответ №4:
Попробуйте это:
Решение 1:
def format_change(string):
if string.endswith("%"):
string = string[0:-1]
str_as_float = float(string)
if str_as_float > 0:
str_as_float = str_as_float * 100
return str_as_float
print(format_change('-0.45%'))
Решение 2:
def format_change(string):
if string.endswith('%'):
return abs(float(string[0:-1]))*100
print(format_change('-0.45%'))
Решение 3:
def format_change(string):
return abs(float(string.split('%')[0]))*100
print(format_change('-0.45%')
Вывод:
45.0