为什么会出现此错误:
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")
答案 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
原因是您必须始终在作业的左侧有一个名称,例如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")
请注意,这仍然会受到ZeroDivisionError
的影响,因为miss是0
。