2012-04-15 76 views
1

我想弄清楚如何有像「輸入表達式:」採取3個變量:第一個int,該操作的字符和第二個int。這在C++中非常簡單,只需cin >> num1 >> operation >> num2。Python中單行的多個變量?

到目前爲止,根據其他人的問題,我嘗試了一個列表並將其拆分。這適用,除了超過1位數的整數。我在做這樣的事情:

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

是的,我剛剛意識到這一點。謝謝!它只是爲了我(程序),所以我不需要處理空間不足的問題。 – 2012-04-15 04:47:18

1

字符串是不可變的,所以您需要在某處捕獲list1.split()的結果。但它不會幫助你,因爲這不會做你想要的。使用解析器,可能使用Python's language services

1

試試這個:

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

'IndexError' any? – 2012-04-15 04:25:11

+0

@ IgnacioVazquez-Abrams那裏,修復它。 – 2012-04-15 04:27:17

+0

'IndexError'消失了,但是這仍然不能滿足提問者的要求。 – 2012-04-15 04:28:12

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 2016-06-05 20:58:16