评估(功能)混乱

2024-10-01 15:29:05 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的代码:

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()的东西,因为我认为它会工作,因为它返回一个字符串,但是显然你不能eval()一个函数调用,我不知道如何解决这个问题请帮助。。。在


Tags: 字符串代码importlenevalrandompoints函数调用
3条回答

呃,你想在这里做什么?在

# bad
eval(thingy) +=100

也就是说:

^{pr2}$

你不能给一个函数调用赋值(我认为这是你得到的错误)。在

你可以这样做:

# good
result = eval(thingy) + 100

似乎工作得很好(结果=400)。在

由于您的一条注释建议您编辑原始变量,因此请尝试使用以下方法代替eval()

vars()[thingy]+=100

或按ZyX建议使用locals()

^{pr2}$

thingy是一个函数,是一个字符串,因此不能像函数一样计算它。如果它是一个函数,你可以这样评价它:

eval("thingy()")

你想干什么?代码很混乱,也许你想做别的事情,但是你做的方式是错误的。在

编辑:

现在你想做什么已经很清楚了,我可以建议你使用字典,它将作为一个“变量”工作(没有必要评估任何东西,这不是解决问题的正确方法):

^{pr2}$

相关问题 更多 >

    热门问题