Python 无法分配给函数调用

Python 无法分配给函数调用,python,python-3.x,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."

为什么会发生此错误:

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")

问题在于这些线路:

int(a)=(myhealth/cpuweapon)
你的意思是:

a=int(myhealth/cpuweapon)
正如AndyG所指出的,您也可以使用整数除法来实现这一点:

a=myhealth//cpuweapon
原因是您必须始终在作业的左侧有一个名称,例如a、foo.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")
请注意,由于未命中率为0,因此仍然存在零分错误。

正如@AndyG所指出的,您的cpuweapon是一个字符串,您需要获得与该武器相关的伤害,因此制作一本字典

weapon = {'sword':0.5, 'spear': 0.25, 'miss': 0.0}
a = int(myhealth/weapon[cpuweapon])
然后你就可以选择武器了

cpuweapon=random.choice(list(weapon.keys()))
然后你可以从字典中获得与武器相关的伤害

weapon = {'sword':0.5, 'spear': 0.25, 'miss': 0.0}
a = int(myhealth/weapon[cpuweapon])
虽然我不确定你为什么不从你的健康中减去伤害,但我把它作为除法,因为你似乎在做这件事。另一个你可能想减法的原因是“未命中”的值是0,所以你要除以0,这肯定不是你想要的

你可能在追求类似的东西

if myhealth - weapon[cpuweapon] <= 0:
    print("I died")

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

inta=myhealth/cpuweapon到底应该做什么?请解释你对它的理解,这样我们就可以找出你的心智模型哪里出了点差错。代码还有很多问题。从不能将int除以字符串的事实开始…@l4mpi我已经添加了它,并测试了cpuweapon将是一个字符串,因此对它进行整数除法是没有意义的。