Hi, I found the solution :)
Special thanks to Alan G. Solution : def FindByName(HerosName): for heros in herosAll: if HerosName == heros.name: return heros return None HerosName = 'notfound' while FindByName(HerosName) == None: HerosName=input("Enter heros name (type exit for close): ") if HerosName.lower() == 'exit': Display_menu() else: ch = FindByName(HerosName) if ch: ch.DisplayCharacterInfos() newSearch=input('New search ? (Y/N)') else : print ('This heros does\'nt exist') 2011/2/25 ALAN GAULD <alan.ga...@btinternet.com> > CCing group. Please use ReplyAll in replies to the list. > > > > Hi, thank your for your answer. i wrote this now : > > > def HeroExist(HerosName): > for heros in herosAll: > if HerosName in heros.name: > herosId = heros.id > return herosId > return None > > HerosName=input("Enter heros name : ") > ch = HeroExist(HerosName) > if ch: > ch.DisplayCharacterInfos() > else : > print ('This heros does\'nt exist') > > But whatever i type, he says : heros doesn't exist :/ > > That suggets a problem with how the name is being stored. > Can you send the code for the Character class, esp[ecially the init method. > Plus a cut n paste of the output of a ruin of the programme so that > we can see exactly what you are inputting and what the > results are? > > BTW you don't need the \ in the last print. You are using double quotes > around the string so you can just type the single quote directly > > print ( "This hero doesn't exist') > > Alan G. > > 2011/2/25 Alan Gauld <alan.ga...@btinternet.com> > >> "Christopher Brookes" <chris.klai...@gmail.com> 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 - Tutor@python.org >> To unsubscribe or change subscription options: >> http://mail.python.org/mailman/listinfo/tutor >> > > > > -- > Brookes Christopher. > > -- Brookes Christopher.
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor