我试图检测使用了什么数学运算符,然后将该运算符赋值给变量。这是我的代码:
start = "3x - 2 = 11"
op = "+"
for m in start:
if m.isalpha():
if m == "-":
op = m
if m == "+":
op = m
if m == "*":
op = m
if m == "/":
op = m
print(op)
然而,尽管存在" - "然而这打印了#34; +"在字符串开始。有人知道它为什么不打印出来" - "? (顺便说一下这是python 3)
答案 0 :(得分:3)
假设有一个唯一的运算符,您可以将start
中的字符与ops相交:
start = "3x - 2 = 11"
ops = set("+-*/")
op = list(set(start) & ops)[0] # op == '-'
如果start
中有多个操作,则set(start) & ops
将包含所有操作(如果没有操作,则为空)。
请注意,在您的示例中,您隐式使用*
,因为3x - 2 = 11
的预期含义可能是3*x - 2 = 11
。
答案 1 :(得分:1)
您的代码存在的问题是,您要检查字符是否为字母然后执行某些操作,您可以检查该字符是否不是字母或数字。
op = "+"
for m in start:
if not m.isalpha() and not m.isdigit():
if m == "-":
op = m
if m == "+":
op = m
if m == "*":
op = m
if m == "/":
op = m
print op
OR 你应该保留一组数学运算符来检查字符是否在你的数组中
start = "3x - 2 = 11"
op = "+"
ops = ["-", "+", "/", "*"] #can be ("-", "+", "/", "*") or "-+/*" too
for m in start:
if m in ops:
if m == "-":
op = m
if m == "+":
op = m
if m == "*":
op = m
if m == "/":
op = m
print op