2016-08-23 8 views
-2

Как я могу позволить пользователю вводить значения и получать ответ, сохраняя при этом значения «x + xy + y» на одной строке?Печать нескольких операторов в одной строке для ввода

print("Calculator") 

x = input("") 
xy = input("") 
y = input("") 

if xy == "+": 
    print(x+y) 
elif xy == "-": 
    print(x-y) 
elif xy == "*": 
    print(x*y) 
elif xy == "/": 
    print(x/y) 
+1

Используйте только один 'input', а затем используйте регулярное выражение или аналогичный синтаксический анализ строки. Кроме того, вы хотите, чтобы пользователь нажал Enter между x, xy и y? –

+1

Этот код, вероятно, не делает то, что вы ожидаете, так как вы не конвертируете строки, то есть: 1 + 2 = 12 – danielfranca

+0

Возможный дубликат [Python, создающий калькулятор] (http://stackoverflow.com/questions/13116167/python-create-a-calculator) – log0

ответ

1

Я предложил бы использовать один input заявление и затем с помощью простого regular expression разобрать строку в x, y и оператора. Например, этот шаблон: (\d+)\s*([-+*/])\s*(\d+). Здесь \d+ означает «один или более цифры», \s* означает «ноль или более пространства», и [-+*/] означает «любой из этих четырех символов. Части в пределах (...) позже могут быть извлечены.

import re 
expr = input() # get one input for entire line 
m = re.match(r"(\d+)\s*([-+*/])\s*(\d+)", expr) # match expression 
if m: # check whether we have a match 
    x, op, y = m.groups() # get the stuff within pairs of (...) 
    x, y = int(x), int(y) # don't forget to cast to int! 
    if op == "+": 
     print(x + y) 
    elif ...: # check operators -, *,/
     ... 
else: 
    print("Invalid expression") 

В качестве альтернативы четыре if/elif вы также можете создать словарь, символы операторов отображения в функцию:

operators = {"+": lambda n, m: n + m} 

а потом просто получить нужную функцию из этого Dict и применить его к операндам:

print(operators[op](x, y)) 
0

Вот еще одна возможность.

raw = raw_input("Calculator: ") 
raw1 = raw.split(" ") 
x = int(raw1[0]) 
xy = raw1[1] 
y = int(raw1[2]) 

if xy == "+": 
    print raw, "=", x + y 
elif xy == "-": 
    print raw, "=", x-y 
elif xy == "/": 
    print raw, "=", x/y 
elif xy == "*": 
    print raw, "=", x*y 
0

Вы можете получить ввод так:

cal = input("Calculator: ").strip().split() 
x, xy, y = int(cal[0]), cal[1], int(cal[2]) 

Затем вы можете обрабатывать входные данные.

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