无法分配给函数调用

时间:2014-10-10 13:02:53

标签: python python-3.x

为什么会出现此错误:

SyntaxError: can't assign to function call

使用此代码:

import random 
weapon=['sword','spear','miss']
myhealth=4
cpuhealth=4
sword=.5
spear=.25
miss=0

cpuweapon=random.choice(weapon)
myweapon=random.choice(weapon)
print(myweapon) 
print("vs.") 
print(cpuweapon)

int(a)=(myhealth/cpuweapon)
int(b)=(cpuhealth/myweapon)
if a>b:
    print("YOU WIN")
if a>b:
    print("YOU WIN")

2 个答案:

答案 0 :(得分:1)

如@AndyG所述,你的cpuweapon是一个字符串,你需要获得与该武器相关的伤害,所以要制作一本字典

weapon = {'sword':0.5, 'spear': 0.25, 'miss': 0.0}

然后你可以通过

选择武器
cpuweapon=random.choice(list(weapon.keys()))

然后你可以从字典中获得与该武器相关的伤害

a = int(myhealth/weapon[cpuweapon])

虽然我不确定你为什么不减去你健康造成的伤害,但我把它留作分裂,因为那是你似乎在做的事情。您可能想要减去的另一个原因是miss的值为0,因此您将除以零,这当然不是您所追求的。

您可能会遇到像

这样的事情
if myhealth - weapon[cpuweapon] <= 0:
    print("I died")

if cpuhealth - weapon[myweapon] <= 0:
    print("I killed you")

答案 1 :(得分:-2)

问题出在这些方面:

int(a)=(myhealth/cpuweapon)

你的意思是:

a=int(myhealth/cpuweapon)

你也可以用整数除法(正如AndyG指出的那样):

a=myhealth//cpuweapon

原因是您必须始终在作业的左侧有一个名称,例如afoo.bar等。名称取值,函数调用产生值。

另外,正如l4mpi指出的那样,cpuweapon是一个字符串,所以最好使用一个字典,制作你的最终节目:

import random
weapons = {'sword': .5, 'spear': .25, 'miss': 0}
myhealth = 4
cpuhealth = 4

cpuweapon = random.choice(list(weapons.keys()))
myweapon = random.choice(list(weapons.keys()))
print(myweapon) 
print("vs.") 
print(cpuweapon)

a = int(myhealth / weapons[cpuweapon])
b = int(cpuhealth / weapons[myweapon])

if a > b:
    print("YOU WIN")
elif a < b:
    print("YOU LOSE")
else:
    print("YOU DRAW")

请注意,这仍然会受到ZeroDivisionError的影响,因为miss是0