0
class Enemy:
def __init__(self,name,health):
self.name=name
self.health=health
wolf=Enemy('wolf',100)
imp=Enemy('imp',70)
orc=Enemy('orc',130)
enemyList=[wolf,imp,orc]
while 1:
enemyNumber=int(input("How many enemies are there? "))
if enemyNumber in range(1,4):
break
else:
print('Wrong number')
if enemyNumber<=2:
del enemyList[2]
if enemyNumber==1:
del enemyList[1]
基本上我現在想的是能夠以這樣說:如何獲得屬性值的列表從類實例列表
attackTarget=None
while not attackTarget in enemyList:
attackTarget=input('Which enemy do you want to attack? ')
if not attackTarget in enemyList:
wrongChoice()
的問題是,我不有敵人名字的列表,但實例本身。我知道我可以喜歡的東西得到它:
enemyNameList=[]
for i in range (enemyNumber):
enemyNameList.append(enemyList[i].name)
,但不是有可以在while和if語句中使用,而無需創建一個全新的永久列表中選擇一個更簡單的方法?喜歡的東西enemyList.name
謝謝,那正是我一直在尋找的。如果我可能會有一個小小的問題:我注意到你在小括號內寫了'敵人',並且用較低和較高的字體嘗試過它,它工作正常。那麼這是如何發生的呢?代碼中沒有任何地方提到小寫字母,我認爲這些東西都是區分大小寫的。如果我嘗試類似'goblin = enemy('goblin',150)'這樣的話'NameError:name'enemy''not defined'。 – user3874806
@ user3874806:列表理解將其定義爲一個新變量。有關示例,請參閱[Python教程](https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions),您可以通過谷歌「Python列表理解」獲取更多信息。 – BrenBarn