Пользователь вводит данные, как преобразовать эти данные в массив? (Данные типа int)
Подскажите, как преобразовать данные типа int в массив. Пользователь вводит данные далее с помощью цикла while нужно перебрать все элементы.
Ответы (2 шт):
a=0
i=list(input())
sp=[]
while a<len(i):
sp.append(int(i[a]))
a+=1
print(sp)
Или так, через for, но короче:
a=[]
for i in list(input()): a.append(int(i))
print(a)
Пример:
Ввод:
345
Вывод:
[3, 4, 5]
Предпологаю, что задача больше про идею алгоритма, нежели про простое решение.
Идея алгоритма в том, что бы получать остаток от деления числа на основание системы счисления, пока число не станет нулевым. По сути мы используем принцип образования систем счисления в обратную сторону. Подробнее про позиционные системы счисления можете почитать тут. Если не ясно, можно посмотреть материалы полегче, благо их в интернете полно. Перейдём к решению.
В данном случае допустим что n свалилось с неба и мы работаем с ним (она объявлена в коде ранее)
base = 10 #основание системы счисления, на случай если мы будем использовать не десятичную
remainders = []
while n != 0:
remainders.extend(n % 10) #получаем остаток
n //= 10 # целочисленно делим число, что бы перейти к следующему разряду
Что бы получить ваш список в обратном порядке вы можете применить метод reverse, который перевернёт ваш список. Как то так: remainders.reverse() (результат не нужно помещать в переменную, метод изменит сам объект, но ничего не вернёт).
Для информации добавлю банальное решение без while:
remainders = list(map(int, str(n)))
Тут мы преобразуем число в строку, а далее каждый символ по отдельности в число. Далее мы превращаем интератор в список и можем с ним удобно работать. Однако, подозреваю, разобраться с работой таких инструментов вам предстоит в будущем. Удачи и усердия в изучение программирования!