我必须做一个命令行游戏,接受怪物1和2的亲和性| HP | AD并与之战斗,同时包括亲和性优势,例如
如果怪物1的亲和性是土,怪物2的亲和性是火,那么怪物1的广告每命中20%,怪物2的广告每命中20%
def getmonsterData():
global Affinity1
global Affinity2
global HP1
global HP2
global AD1
global AD2
monster1 = raw_input("Enter the Monster 1's Affinity|HP|AD> ")
x = monster1.index('|')
y = monster1.index('|',x+1)
Affinity1 = monster1[:x]
HP1 = monster1[x+1:y]
AD1 = monster1[y+1:]
printNow(Affinity1+"|"+HP1+"|"+AD1)
monster2 = raw_input("Enter the Monster 2's Affinity|HP|AD> ")
x = monster2.index('|')
y = monster2.index('|',x+1)
Affinity2 = monster2[:x]
HP2 = monster2[x+1:y]
AD2 = monster2[y+1:]
printNow(Affinity2+"|"+HP2+"|"+AD2)
battleNow();
def battleNow():
global Affinity1
global Affinity2
global HP1
global HP2
global AD1
global AD2
if (Affinity1 == Affinity2):
printNow("There are no affinity advantages in this battle")
if (Affinity1 == ("Earth") and Affinity2 == ("Fire")):
AD1 = (AD1*.20)+AD1 #THIS IS SUPPOSED TO RETURN AD1(MONSTER 1'S AD) TO THE INCREASED 20%
printNow("Monster 1 has an affinity advantage over Monster 2")
return
printNow(AD1)
然而,一旦我这样做,我得到这个恼人的错误
======= Loading Progam =======
Enter the Monster 1's Affinity|HP|AD> Earth|55|1
Earth|55|1
Enter the Monster 2's Affinity|HP|AD> Fire|52|1
Fire|52|1
The error was:can't multiply sequence by non-int of type 'float'
Inappropriate argument type.
不知道该怎么办。。我找遍了所有的答案,没有一个真正可靠的答案,这与成倍增加一个列表无关。 帮助:D
Edittttt公司: 在将我的HP1/2和AD1/2更改为int()之后,我没有得到任何错误,只收到
======= Loading Progam =======
Enter the Monster 1's Affinity|HP|AD> Earth|22|1
Enter the Monster 2's Affinity|HP|AD> Fire|25|1
Monster 1 has an affinity advantage over Monster 2
>>>
我不知道最后一个printNow()。我想把AD1打印出来,看看20%的增长是否正确地加到了AD1上。你知道吗
return
printNow(AD1)
你的问题是你试图用一个浮点数(AD1*.20)乘以一个字符串。你知道吗
如果启动python解释器,并执行以下操作:
你会得到的
要将AD1转换为浮点:
其他一些想法:
我对你的代码做了一些修改,得出了以下结论:
出现此错误是因为所有的
HP
和AD
都是字符串,而不是int。将字符串乘以int时,会得到该字符串的多个副本:因为不能逻辑地将字符串乘以0.2,所以会出现错误。要修复它,只需使用内置的
int()
函数,如下所示:作为旁注,我想向您介绍
str.split()
函数。与其计算字符串索引并尝试以这种方式解析输入,不如简单地执行以下操作你们都准备好了。只需在需要它的变量上调用
int()
,然后再将它们用于任何计算。你知道吗相关问题 更多 >
编程相关推荐