python - 评估赋值时出现语法错误

标签 python syntax-error eval

出于某种原因,当我运行时

import sys
from fractions import Fraction
for i, j in zip(["a","b","c","d","e","f"], range(1,6)):
    eval("{0} = int(sys.argv[{1}])".format(i, j))
if a*d != c*b:
    x = (e*d-b*f)/(a*d-c*b) 
    y = (a*f-c*e)/(a*d-c*b)
    print "x = ", x , ", y = ", y
elif e*d-b*f == 0 and a*f-e*c == 0:
    print "Infinite solutions"
    print "Slope = ", Fraction(-a,b), ", Y-Intercept = ", Fraction(e,b)
else:
    print "No solution"

使用 python2 py.py 1 3 3 9 5 15,它给我以下错误

Traceback (most recent call last):
  File "py.py", line 4, in <module>
    eval("{0} = int(sys.argv[{1}])".format(i, j))
  File "<string>", line 1
    a = int(sys.argv[1])
      ^
SyntaxError: invalid syntax

关于为什么会发生这种情况的任何想法?我确定它是有效的语法,但也许 eval 弄乱了它?

最佳答案

这是对 eval 的不必要使用。您的代码:

for i, j in zip(["a","b","c","d","e","f"], range(1,6)):
    eval("{0} = int(sys.argv[{1}])".format(i, j))

可以更好地表示为:

a, b, c, d, e, f = map(int, sys.argv[1:7])

或作为:

a, b, c, d, e, f = (int(x) for x in sys.argv[1:7])

[注意原代码中range不对,应该是range(1,7)]

关于python - 评估赋值时出现语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26919774/

相关文章:

仅使用标准库的 python http NTLM 身份验证

php - Mysql 查询在 Php 文件中不起作用

PHP如何将eval(0分配给变量

javascript - 捕获通过 dom 操作加载的 Javascript 子文件中的错误

sed - 从json参数获取值不起作用(jq : 1 compile error)

PHP 验证约束列表

javascript - javascript 的 eval 不是邪恶的例子?

python - 从曲率上下阈值检测点/特征 - 曲线四边形形状检测算法

python - 通过与另一个系列进行比较来查找数据框的索引值

Python time.sleep 方法无法正常工作