Python 在一行上打印多条语句以供输入

Python 在一行上打印多条语句以供输入,python,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) 我建议使用一个input语句,然后使用简单的语法将字符串解

如何允许用户输入值并接收答案,同时将“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)

我建议使用一个
input
语句,然后使用简单的语法将字符串解析为
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))

还有一种可能性

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

您可以获得如下输入:

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

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

只使用一个
输入
,然后使用正则表达式或类似的表达式来解析字符串。此外,您是否希望用户在x、xy和y之间按Enter键?此代码可能没有达到您预期的效果,因为您没有转换字符串,即:1+2=12可能重复我更改的代码。仅想要输入最终结果@tobias_kI将此问题还原为以前的版本。请不要将您的问题替换为完全不同的问题,从而使所有现有答案无效。如果您有后续问题,请将其作为另一个问题发布。