#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. Я придерживался неправильного предположения, что все методы работают на месте. Спасибо, все, что мне нужно было сделать, это назначить новую переменную.