这是我的代码:
import random
a=random.randrange(100,400)
b=0
c=100
d=200
e=300
f=400
g=500
points =("b","c","d","e","f","g")
randomadd=random.randrange(1,500)
linepoints2=(b,305),(c,a),(d,305),(e,305),(f,a),(g,305),(g,300),(f,a+5),(e,300),(d,300),(c,a+5),(b,300)
thingy=points[random.randrange(1,len(points))]
eval(thingy) +=100
我想eval()thingy因为我认为它会工作,因为它返回一个字符串,但显然你不能eval()函数调用,我不知道如何解决这个请帮助...
答案 0 :(得分:2)
thingy
不是一个函数,是一个字符串,因此您无法将其评估为函数。如果是一个函数,你可以这样评价:
eval("thingy()")
你想做什么?代码令人困惑,也许你正在尝试做别的事情,但你做的方式是错误的。
编辑:
现在很清楚你打算做什么,我可以建议你使用字典,它可以作为一个“变量”(不需要 eval 任何东西,这不是正确的方法解决你的问题):
d = {}
d[thingy] = 100
d[thingy] += 200
d[thingy]
> 300
答案 1 :(得分:1)
呃,你想在这做什么?
# bad
eval(thingy) +=100
转换为:
# bad
eval(thingy) = eval(thingy) + 100
你不能分配给一个函数调用(我认为 是你得到的错误)。
您可以执行以下操作:
# good
result = eval(thingy) + 100
这似乎完美无缺(结果= 400)。
答案 2 :(得分:1)
答案 3 :(得分:0)
更好 - 完全避免使用eval()。尝试
from random import randrange, choice
points = (
randrange(100,400),
0,
100,
200,
300,
400,
500
)
result = choice(points) + 100