#python #split #termux
Вопрос:
Как принять ввод числа от пользователя, разделить его цифры и использовать каждую цифру отдельно
Например, если пользователь вводит «4568», код должен разделить 4568 на 4,5,6,8
Комментарии:
1. Пожалуйста, покажите, что вы пробовали до сих пор..
Ответ №1:
Используйте понимание списка по вводимым пользователем данным.
values = [int(i) for i in input()]
Обратите внимание, что этот код не обрабатывает случаи, когда пользователь вводит символы, не содержащие цифр. Чтобы разобраться с этим делом, вы предпочли бы написать :
values = [int(i) for i in input() if i.isdigit()]
Комментарии:
1. Нет необходимости преобразовывать входные данные в список.
2. @Педро Майя, как бы вы тогда использовали каждую цифру отдельно ?
3. Итерация по строке делает именно это.
4. @PedroMaia о, вы правы. Для меня это ошибка. Я собираюсь отредактировать свое сообщение.
Ответ №2:
Вы могли map
бы это сделать int
и преобразовать map
в list
.
digits = list(map(int, input()))
Если вы хотите убедиться, что принимаются только номера, добавьте a filter
в input
digits = list(map(int, filter(lambda c: c.isdigit(), input())))
Комментарии:
1. Как уже предлагалось, это может привести к сбою в случае нецелочисленного пользовательского ввода
2. @Buzz — это нормально. Это не входило в вопрос. Я ответил на вопрос.
3. Я не говорил, что это неправильно 😉
4. @Buzz — я добавил цифровой фильтр.
Ответ №3:
Преобразуйте его в строку, выполните итерацию в строку и получите каждый символ в виде целого числа.
# Input from the user inp = input() digits=[] for c in str(inp): try: digit=int(c) # Populate the list with the last digit obtained digits.append(digit) except: # I'm assuming you don't need to worry about any other non integer character pass
Или в одной строке, НО обратите внимание, что если во входных данных присутствует какой-либо нецелой символ, карта завершается ошибкой:
inp = 1234 digits = list(map(int, list(str(inp)))
Где list(str(inp))
разбивает преобразованный в строку ввод в списке его символов, map
применяет преобразование в целое число к каждому элементу последнего списка, в конечном итоге преобразование в список возвращает нужный массив
ПРАВКА: Я писал код, пока писался комментарий. Теперь я интегрировал функцию прямого int
предложения для отображения
EDIT2: придирчивое редактирование, позволяющее вводить фактический пользовательский ввод вместо тестовой переменной. Это нисколько не меняет сути дела.
Комментарии:
1. Или просто
list(map(int, list('12345')))
.2. Это не работает. Вы не производите соответствующие преобразования и не используете правильные типы.
3. Этот код неверен на многих уровнях.
4. Давайте зажжем их
5. Это все еще неправильно и повсюду. Вопрос касался ввода пользователем, а не какого-то числа, которое вы преобразуете в строку. Затем вы просто добавляете решение из комментариев, которое полностью отличается от вашего подхода. Кроме того, вам не нужно заворачивать строку в список. Строки уже можно повторять.