Как считать отформатированный вход в Python?

Существует два места, которые приходят на ум, которые имеют подобное поведение в разработке программного обеспечения для меня. Однако ни один не точная аналогия, так как они оба требуют

, первым является асинхронное программирование. Как упомянутый прежде , существуют некоторые различия между асинхронной моделью и fastpass моделью, с точки зрения того, как Вы ожидаете. Однако некоторые другие модели программирования (такой как Интерфейс передачи сообщений ) дают Вам некоторые другие опции, которые, вероятно, становятся немного ближе к модели FastPass.

, В частности, я думал о методах MPI_Gather в MPI - они используют модель, это, вероятно, немного ближе. Каждая функция роздана кластер, и затем можно звонить, собираются из корня для получения в настоящее время обрабатываемых данных. Целью является то же (заставление ждать всех меньше [не блокирующийся на пользователе] и идущий вокруг, тратя [или обрабатывая данные]).

другое место I видит, что подобие находится в усовершенствованных потоковых моделях программирования, таких как новый планировщик в TPL. Одно из основных преимуществ TPL, прибывающего в C# 4, - то, что планировщик позволит кражу работы, чтобы мне походит на четкую реализацию в программном обеспечении попытки сместиться вокруг строк динамично - который скрепляет к FastPass. Одна из хороших вещей с fastpass - то, что Вы сидите в строке меньше, и едете больше и перемещаетесь больше. С TPL, там (надо надеяться), меньше блокируется и ожидает, так как поток, кто закончил его очередь, может украсть задачи у других очередей.

7
задан SilentGhost 7 April 2010 в 10:12
поделиться

4 ответа

Используйте raw_input () вместо input () .

# Python 2.5.4
>>> a = raw_input()
3, 4, 5
>>> a
'3, 4, 5'
>>> b = a.split(', ')
>>> b
['3', '4', '5']
>>> [s.strip() for s in raw_input().split(",")] # one liner
3, 4, 5
['3', '4', '5']

Функция вводящего в заблуждение имени input не делает то, что вы бы этого ожидали. На самом деле он оценивает ввод от stdin как код python.

В вашем случае оказывается, что тогда у вас есть кортеж чисел в a , все проанализированы и готовы к работе, но обычно вы не делаете этого. Я действительно не хочу использовать этот любопытный побочный эффект. Другие входные данные могут вызвать любое количество событий.

Между прочим, в Python 3 это исправлено, и теперь функция input делает то, что вы ожидаете.

Еще две вещи:

  1. ] Вам не нужно импортировать строку , чтобы выполнять простые операции со строкой.
  2. Как mjv сказал , чтобы разбить кортеж или список на несколько переменных, вы можете «распаковать» его. Однако это будет невозможно, если вы не знаете, какой длины будет список.

Распаковка:

>>> l = (1,2,3,4,5)
>>> a,b,c,d,e = l
>>> e
5
15
ответ дан 6 December 2019 в 14:06
поделиться

Только в Python 2.x (*)

после a = input ()

a - это кортеж с 5 значениями, которые можно легко проанализировать!

Быстрый способ присвоить эти 5 значений -

a, b, c, d, e = a

(*) с Python версии 3.0? или, конечно, 3.1, input () больше похож на метод raw_input () в 2.x, что делает его менее запутанным. (спасибо, mshsayem, чтобы указать на это!)

2
ответ дан 6 December 2019 в 14:06
поделиться

Если вы распечатаете (переменную, содержащую ваш ввод), вы обнаружите, что это уже содержит кортеж. Вам не нужно разделять содержимое.

>>> a = input ()
3, 4, 5, 1, 8
>>> print (a)
(3, 4, 5, 1, 8)
>>> тип (a)
<введите "кортеж">
>>> a [0]
3
>>> len (a)
5

0
ответ дан 6 December 2019 в 14:06
поделиться
in = eval(input())

a, b, c, d, e = in
-2
ответ дан 6 December 2019 в 14:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: