При преобразовании входных данных в список с плавающей запятой split() не работает

#python #split

#python #разделение

Вопрос:

Я пытаюсь создать программу, которая поможет некоторым людям, работающим в моей лаборатории. Я также очень начинающий программист.

Мой код разбивается на то, что я считал простыми несколькими строками, в которых я преобразую входной список чисел (например, 675.23, 781.30, 979.10 …), по умолчанию являющийся строкой, в числа с плавающей запятой.

Например:

 inputNumbers = input("Please type your numbers here (comma separated): ")
inputNumbers.split(", ")
  

Затем я запускаю цикл for для преобразования в числа с плавающей запятой в новом списке:

 inputNumbersConv = []
for i in inputNumbers:
    inputNumbersConv.append(float(i))
  

Однако это выдает ошибку и говорит мне, что я не могу преобразовать «.» в число с плавающей запятой. Приведенный выше .split() не разделяется запятыми. Если вы введете 1.23 и запустите

 print(inputNumbers[1])
  

вы получаете «.»

Что я здесь делаю не так? Я пробовал разные разделители, включая только пробелы.

Комментарии:

1. split не работает на месте. Вам нужно где-то присвоить результат, например inputNumbers = inputNumbers.split(", ") .

Ответ №1:

Вы не устанавливаете inputNumbers результат inputNumbers.split(", ") . В результате inputNumbers остается ваш необработанный пользовательский ввод, когда вы перебираете его в цикле for .

Более лаконичная реализация вашей программы будет:

 inputNumbers = map(float, input("Please type your numbers here (comma separated): ").split(", "))
  

Ответ №2:

Тривиально, вам нужно присвоить массив разделенных значений переменной в LHS для последующего использования:

 inputNumbers = input("Please type your numbers here (comma separated): ")
nums = inputNumbers.split(", ")

inputNumbersConv = []
for i in nums:
    inputNumbersConv.append(float(i))
print(inputNumbersConv)
  

Для ввода 675.23, 781.30, 979.10 печатный вывод был:

 [675.23, 781.3, 979.1]
  

Комментарии:

1. Я придерживался неправильного предположения, что все методы работают на месте. Спасибо, все, что мне нужно было сделать, это назначить новую переменную.