"Christopher Brookes" <[email protected]> wrote
Hi, is there a better way to do this ? (*heros are Character*)
There are several better ways but mainly they involve
techniques that may be too advanced for you at present,
so we'll keep it simple for now :-)
herosAll = [
Character(0,"Chris","Soldat fort",type[0],15,5,8,50,1),
Character(1,"Antaa","Soldat moins fort",type[0],15,5,8,50,1)]
def HeroExist(HerosName):
herosId = -1
for heros in herosAll:
if HerosName in heros.name:
herosId = heros.id
if herosId != -1:
return herosId
else:
return -1
replace from the for loop down with:
for heros in herosAll:
if HerosName in heros.name:
herosId = heros.id
return herosId
return None # This allows more convenient testing, see below
Which has the advantage of being slightly faster too.
HerosName=input("Enter heros name : ")
if Character.HeroExist(HerosName) != -1:
HeroExist is not a method of Character ( although you could
make it so - one of the better solutions I alluded to above! )
So you don't need to prefix it with Character.
And you can assign the return value to a variable so
you avoid calling it twice:
HerosName=input("Enter heros name : ")
ch = HeroExist(HerosName):
if ch: # because None is treated as False
ch.DisplayCharacterInfos()
else :
print ('This heros does\'nt exist')
HTH,
--
Alan Gauld
Author of the Learn to Program web site
http://www.alan-g.me.uk/
_______________________________________________
Tutor maillist - [email protected]
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor