Python 3.x 字典中字符串的三元表达式
如何在不产生任何错误的情况下计算此三元表达式?当我在不使用字符串和Python 3.x 字典中字符串的三元表达式,python-3.x,syntax-error,python-3.6,ternary-operator,Python 3.x,Syntax Error,Python 3.6,Ternary Operator,如何在不产生任何错误的情况下计算此三元表达式?当我在不使用字符串和eval()的情况下运行它时,它工作得非常好,直到我尝试使用字符串和eval()运行它为止 错误回溯: Traceback (most recent call last): File "C:/Users/.../mazefinder.py", line 25, in <module> eval(c[i]) File "<string>", line 1 y += 1 if y ==
eval()
的情况下运行它时,它工作得非常好,直到我尝试使用字符串和eval()
运行它为止
错误回溯:
Traceback (most recent call last):
File "C:/Users/.../mazefinder.py", line 25, in <module>
eval(c[i])
File "<string>", line 1
y += 1 if y == 1 else print('F')
^
SyntaxError: invalid syntax
回溯(最近一次呼叫最后一次):
文件“C:/Users/../mazefinder.py”,第25行,在
评估(c[i])
文件“”,第1行
如果y==1,则y+=1,否则打印('F')
^
SyntaxError:无效语法
我想让这段代码增加或减少x或y 您正在向需要表达式的“eval”函数提供“statement”。为变量赋值是一种“语句”。所以,如果您提供的是表达式,而不是语句,则不会引发错误
让我们考虑你确实需要使用“EVE”,然后你可以做如下:
x = 1
x += eval("1 if x == 1 else 0") # a statement is outside of an expression
x += eval("-1 if x == 2 else 0")
y += eval("1 if y == 1 else 0")
y += eval("-1 if y == 2 else 0")
我们更改值而不是运算符,因此我们可以将语句移出“eval”,使两个条件结果的值相同
但是,即使不考虑“SyntaxError”错误,在您自己的示例中,如果条件的结果为“False”,您也会得到“TypeError”错误,因为“print”函数返回“None”
然后,这里有更多的问题和反模式,例如:
- 在您的示例中根本不需要通过索引进行“迭代”
- 这里使用“dict”是错误的对象类型,因为您的示例只需要值,而不需要注意键
- 您可以执行冗余操作,例如将一个条件分离为多个单独的条件
- 完全不清楚是否需要使用“eval”,只有在您确实需要时才应该使用
x = 1
x += eval("1 if x == 1 else 0") # a statement is outside of an expression
x += eval("-1 if x == 2 else 0")
y += eval("1 if y == 1 else 0")
y += eval("-1 if y == 2 else 0")