Python: от ввода пользователем вертикальной строки к списку

#python

#python

Вопрос:

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

 numbers = [int(n) for n in input().split()]
  

но не уверен, как это сделать, если пользовательский ввод является вертикальным (введите после ввода целое число: 224, 32, 5)…

пример ввода:

224 32 5

пример вывода:

[224, 32, 5]

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

1. вы должны понимать, что нажатие enter заставит input функцию вернуть строку, которая была написана пользователем. Пути назад нет. Если вам нужно больше чисел, ваш единственный вариант — вызвать input несколько раз. тем не менее, вы должны использовать raw_input при получении пользовательского ввода.

Ответ №1:

 number_read = raw_input()
number_list = []
while number_read != 'q':
  number_list.append(int(number_read))
  number_read = raw_input()
  

Итак, как только пользователь напишет q и нажмет enter, вы закончите сбор ввода

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

1. Большое вам спасибо! Ваш добрый ответ был действительно полезен, однако я обнаружил, что ваш код постепенно добавляет ввод (вывод: [224], [224, 32], [224, 32, 5]) и я хочу знать, как я могу получить последнюю строку вывода. Спасибо! 🙂

2. В python нет такого понятия, как vertical list . Чего вы пытаетесь достичь? Как вы получаете свой ввод? input() функция завершается, если пользователь нажимает enter, поэтому вы даже не можете прочитать числа так, как вы думаете, что вы их прочитали. Кроме того, не используйте функцию input , вместо этого используйте raw_input . Единственное другое средство — это чтение списка из файла, потому что, как я уже сказал … если пользователь нажмет enter, вы получите только 1 номер, а не список. Это то, как input и raw_input работает. пожалуйста, объясните подробнее, что вы пытаетесь сделать.

3. Извините за мое расплывчатое и недостаточное объяснение. Я говорил о вводе ввода несколько раз, нажимая кнопку ввода, но не сразу, с помощью интервала между двумя числами. Кроме того, из-за разницы в версии (версия 2.7 работает, но не для версии 3.2.3) raw_input у меня не работает, и я получаю для нее неопределенную переменную. 224 32 [224] 5 [224, 32] ( пустой) [224, 32, 5] (ошибка значения возникает при .append() строка) И то, что я хочу для вывода, — это всего одна строка -> [224, 32, 5]

4. ‘224’ ’32’ [224] ‘5’ [224, 32] ( пустой) [224, 32, 5] (‘ ‘ метки означают ввод)

Ответ №2:

Как упоминал @vlad-ardelean, вы можете создать список и с помощью команды «добавить» добавить его параметр как отдельный элемент в список. Однако, если ваш ввод будет представлять собой список Python (или любой другой итерируемый, например, кортеж), вы можете преобразовать его в строку для отображения:

 inputNumbers = input_list()
Buffer= []
Buffer  = [('X' % ord(x)) for x in inputNumbers]
Vertical_list = []
Vertical_list= 'n'.join(map(str, Buffer))
  

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

1. Что такое Input_list() ? Кстати, по стилю переменная Python должна быть записана в нижнем регистре и с подчеркиванием между словами.

2. Предполагая Input_List , что есть функция, которая возвращает список, вы можете написать код следующим образом (вам не нужны 3 строки там): numbers = Input_list(); vertical_list = ', '.join(str(element) for element in numbers) — хотя vertical_list переменная не является разделенной запятыми «горизонтальной» строкой…. Вы хотели сказать 'n'.join вместо ', '.join ?

3. Спасибо за ваш комментарий. Python — это язык, чувствительный к регистру, и, например, переменная и переменная не совпадают, однако это не означает, что переменные должны быть записаны в нижнем регистре. Кроме того, несколько слов могут быть разделены с помощью символа подчеркивания, но это не обязательно. Вместо этого я мог бы использовать стиль написания в верблюжьем регистре, то есть писать с заглавной буквы каждую первую букву слова, кроме начального слова, без пробелов. Я согласен с вами в вашем последнем пункте о n 🙂

Ответ №3:

Если существует конечное число входных данных, используйте это:

 p,q=(int(input()) for _ in range(2))
pq=[p]
  

пользовательский ввод:

 5
6
  

печать (pq)

 [5,6]