eval():不能分配给函数调用

时间:2014-05-23 19:22:46

标签: eval python-3.2

我的cookie点击器的又一个问题...... 这是我制作的产生错误的代码:

cps=cps+bcps[buych]
c=c-bprice[buych]
eval(buych)=eval(buych)+1

cps是一个变量,
c是变量,
b1,b2,b3,b4,b5是变量
buych是一个字符串(我从input()命令获得)
bcps和bprice是地图(如下所示)

bcps = {"b1":'1',
    "b2":'5',
    "b3":'10',
    "b4":'20',
    "b5":'25'}
bprice = {"b1":'10',
    "b2":'20',
    "b3":'30',
    "b4":'40',
    "b5":'50'}

所以,我想要达到的目的是:
- 取输入字符串值,即' b1'< b2'' b3',' b4',' B5'
- 增加cps在bcps内购买它的价值
- 降低c在bprice中的值 - 使用eval转换' b#'到b#
- 按1

增加b#

运行脚本时,我没有在python shell中获得错误文本。相反,我得到一个弹出窗口,上面写着“不能分配给函数调用"”。错误突出显示为eval()之前的第一个空格。我真的没有这个,因为我在错误中没有任何功能。

感谢阅读,
 饼干怪物

1 个答案:

答案 0 :(得分:1)

eval(buych)是一个函数调用 - 您正在调用函数eval()。您只能分配给变量,不能分配给函数的结果。

您需要将变量连接到有效的赋值表达式,并exec

exec(buych + '=' + buych + '+1')

eval用于评估表达式,您必须使用exec来执行整个语句。

但如果你发现自己需要这样做,那么你通常会做错事。您应该使用列表或单词来代替计算变量名称和表达式,以便您可以使用索引或键来引用它们。