Рассмотрим проблему запроса у пользователя списка чисел.
Допустим мы просто просим юзера ввести список чисел отделенных пробелами. Для этого вполне пойдет такой код
numbers = input("Введите список чисел: ")
print(numbers[0]) # попробую так вывести первое число
если запустить эту программу и ввести числа, например, 746 9823 12 8
то получу в ответ
я то конечно хотел 746 получить, но получил 7, а почему так?
А потому, что чтобы юзер не ввел, питон по умолчанию воспринимает это как строку, и для него вот эта 746 9823 12 8
это просто длинное слово, а numbers[0]
выдает первую букву этого длинного слова, и первая буква есть 7
, я мог бы написать там звездочка
и получить в ответ букву з
но я то хочу именно число. Как-быть-то?
Первая идея которая приходит на ум – это попробовать обернуть результат в int, типа так
numbers = input("Введите список чисел: ")
numbers = int(numbers)
print(numbers[0])
пробуем
то есть он теперь пытается преобразовать всю строку 746 87 98 1
в одно число, ну и понятное дело, что числа с пробелами не бывает и он падает.
Значит надо действовать по-другому. Нам надо как-то превратить строку 746 87 98 1
в четыре строки 746
, 87
, 98
, 1
, то есть в список из четырех строк
И мы можем это сделать!
Специально для этого у любой строки есть специальная функция, которая позволяет разбить строку на подстроку каким-нибудь разделителем. Работает так
запускаем и смотрим на результат
то есть в number2 у нас оказался список подстрок. Давайте попробуем вывести первый элемент
numbers = input("Введите список чисел: ")
numbers2 = numbers.split(" ")
print(numbers2[0])
запускаем
то что надо! =)
Попробуем проверить число ли у нас в списке. Например, путем сложения со вторым элементом. Если все верно, то должно получиться 746 + 87 = 833
numbers = input("Введите список чисел: ")
numbers2 = numbers.split(" ")
print(numbers2[0] + numbers2[1]) # складываю
запускаем
так, блин, что-то не то. Он их склеил, а значит это все еще числа.
Ну, в принципе, это предсказуемо. Ведь если разбить большую строку на подстроки, то получим список подстрок. И как тогда превратить их в числа?
Для этого на самом деле существует много способов. Но мы рассмотрим самый примитивный.
Мы просто заведем новый список и заполним его
numbers = input("Введите список чисел: ")
numbers2 = numbers.split(" ")
numbers3 = [] # завел новый пустой список
for el in numbers2:
numbers3.append(int(el)) # добавляю очередной элемент через append
print(f"numbers2 = {numbers2}")
print(f"numbers3 = {numbers3}")
Вот такие дела =О