<p>你的问题是你试图用一个浮点数(AD1*.20)乘以一个字符串。你知道吗</p>
<p>如果启动python解释器,并执行以下操作:</p>
<pre><code>>>> ad = "10"
>>> print ad *.5 + ad
</code></pre>
<p>你会得到的</p>
<pre><code>Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can't multiply sequence by non-int of type 'float'
</code></pre>
<p>要将AD1转换为浮点:</p>
<pre><code>print float(ad) *.5 + float(ad)
</code></pre>
<p>其他一些想法:</p>
<ul>
<li>不要使用globals。你知道吗</li>
<li>使用类来存储实例特定的数据。你知道吗</li>
<li>行尾不需要分号。你知道吗</li>
<li>按建议缩进4个空格</li>
</ul>
<p>我对你的代码做了一些修改,得出了以下结论:</p>
<pre><code>class Monster():
"""Define monster characteristics
"""
def __init__(self):
pass
def getMonsterData(self):
monster = raw_input("Enter the Monster's Affinity|HP|AD> ")
self.loadMonsterData(monster)
def loadMonsterData(self, monsterData):
self.affinity, self.hp, self.ad = monsterData.split('|') # not safe
print("{}|{}|{}".format(self.affinity, self.hp, self.ad))
def battleNow(monster1, monster2):
"""Make 2 monsters fight it out
"""
if (monster1.affinity == monster2.affinity):
printNow("There are no affinity advantages in this battle")
if (monster1.affinity == "Earth" and monster2.affinity == "Fire"):
ad = float(monster1.ad)
monster1.ad = ad * .2 + ad #THIS IS SUPPOSED TO RETURN AD1(MONSTER 1'S AD) TO THE INCREASED 20%
print("Monster 1 has an affinity advantage ({}) over Monster 2 ({})".format(monster1.ad, monster2.ad))
return
print(monster1.ad)
if __name__ == '__main__':
monsters = []
monsters.append(Monster())
monsters.append(Monster())
monsters[0].loadMonsterData("Earth|100|10")
monsters[1].loadMonsterData("Fire|50|5")
battleNow(monsters[0], monsters[1])
</code></pre>