2012-04-15 3 views
1

Я пытаюсь понять, как что-то вроде «Введите выражение:» возьмите 3 переменные: первый int, символ операции и второй int. Это очень просто на C++ с помощью cin >> num1 >> operation >> num2.Несколько переменных из одной строки в Python?

До сих пор, по другим вопросам, я попытался взять список и разделить его. Это работает, за исключением целых чисел с более чем одной цифрой. Я делаю что-то вроде этого:

list1=raw_input() 
list1.split() 
print list1 
num1=list1[0] 
plus=list1[1] 
num2=list1[2] 
print num1, plus, num2 

Например, ввод 10 + 3 будет выводить 1 0 + Я чувствую, что есть простое решение проблемы, но я не знаю. Любая помощь приветствуется.

ответ

0

Я предложил бы использовать регулярное выражение для этого случая, например:

re_exp = re.compile(r'\s*(\d+)\s*([^\d\s])+\s*(\d+)') 
expr = raw_input() 
match = re_exp.match(expr) 
if match: 
    num1, oper, num2 = match.groups() 
    print num1, oper, num2 

С split, вы можете разобрать 10 + 1, но это будет сложнее сделать с 10+1 (без пробелов) или для обработки обоих случаев.

+0

Да, я просто понял это. благодаря! Это просто для меня (программа), поэтому мне не нужно иметь дело с нехваткой пробелов. –

1

Строки неизменяемы, поэтому вам нужно зафиксировать результат list1.split(). Но это вам не поможет, так как это не будет делать то, что вы хотите. Используйте синтаксический анализатор, возможно, используя Python's language services.

1

Попробуйте вместо этого:

list1 = raw_input() 
for x in list1.split(): 
    print x, 
+1

'IndexError' кто-нибудь? –

+0

@ Игнасио Васкес-Абрамс там, исправил его. –

+0

«IndexError» ушел, но это все равно не будет делать то, чего хочет ассер. –

0
#You should write like this 
list1 = raw_input() 
a=list1.split() 
num1=a[0] 
plus=a[1] 
num2=a[2] 
print num1, plus, num2 
+0

Эй, добро пожаловать в SO. Было бы здорово, если бы вы могли объяснить свой код и привести примеры, почему op «должен писать так». – DrewT

Смежные вопросы