在一行上打印多个语句以进行输入

时间:2016-08-23 11:58:20

标签: python

如何让用户输入值并接收答案,同时保持" 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)

3 个答案:

答案 0 :(得分:1)

我建议使用单个input语句,然后使用简单的regular expression将字符串解析为xy和运算符。例如,此模式:(\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))

答案 1 :(得分: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

答案 2 :(得分:0)

你可以得到这样的输入:

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

然后您可以处理输入数据。