Axxxy Skrevet 25. april 2014 Del Skrevet 25. april 2014 Akkuratt nå jobber jeg med ett script som skal finne teksten som er lengst. Illustrerende eksempel: lst = *chunk of text*.split('\n') lenghtNum = 0 curIndex for n, i in enumerate(lst): #<code goes here># #end of loop if lenghtNum < len(i): lenghtNum = len(i) curIndex = n print "index %s has the longest lenght of: %s" % (curIndex, lenghtNum) Når jeg testet dette, så ville ikke python printe ut lengden (lenghtNum) Teksten ble: "index 6 has the longest lenght of: 0" Det merkelige er at jeg kunne find skrive: print len(i), under, if lenghtNum < len(i): Og svaret kom ut rett. Jeg kunne også skrive, lenghtNum = len(i) print lenghtNum hvor som helst og fortsatt få ut rett svar, men ikke under if statement'en. Enda merkeligere er det at curIndex = n ble utført og jeg kunne fint skrive print curIndex under if statement'en og få rett svar. Dette ordnet seg ikke før jeg skrev en kommentar over if samtidig som jeg prøvde å forandre '<' til '>' selv om svaret villet blitt feil. Når jeg byttet tilbake, da fungerte alt som det skulle og jeg fikk opp: "index 6 has the longest lenght of: 483" Jeg eller Python som ikke klarte å gjøre jobben skikkelig? Lenke til kommentar
snippsat Skrevet 25. april 2014 Del Skrevet 25. april 2014 (endret) Jeg eller Python som ikke klarte å gjøre jobben skikkelig? Det er nok deg For og skrive det penere og sånn det skal se ut i Python. lst = ['This', 'is', 'Python'] lenght_num = 0 cur_index = 0 for index, word in enumerate(lst): if lenght_num < len(word): lenght_num = len(word) #print lenght_num # Correct last value set to lenght_num #print index # Correct last value set to index cur_index = index print "index {} has the longest lenght of: {}".format(cur_index, lenght_num) Mer Pythonic. >>> lst = ['This', 'is', 'Python'] >>> longest_word = max(lst, key=len) >>> max_count = max(len(i) for i in lst) print 'Longest word is "{}" at index "{}" with count of "{}" character'.\ format(longest_word, lst.index(longest_word), max_count) Longest word is "Python" at index "2" with count of "6" character Endret 25. april 2014 av snippsat Lenke til kommentar
Rasjonelt Skrevet 25. april 2014 Del Skrevet 25. april 2014 Mer Pythonic. >>> lst = ['This', 'is', 'Python'] >>> longest_word = max(lst, key=len) >>> max_count = max(len(i) for i in lst) print 'Longest word is "{}" at index "{}" with count of "{}" character'.\ format(longest_word, lst.index(longest_word), max_count) Longest word is "Python" at index "2" with count of "6" character God løsning, men når du har funnet det lengste ordet så blir vel ´max_count = max(len(i) for i in lst)´ overflødig, det er jo bare å skrive ut len(longest_word). Lenke til kommentar
snippsat Skrevet 25. april 2014 Del Skrevet 25. april 2014 et er jo bare å skrive ut len(longest_word). Helt klart det enkle er det beste. Man kan si max(len(i) for i in lst),egner se best alene når man ikke først har funnet det lengste ordet. >>> max(len(i) for i in 'i am longest'.split()) 7 Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå