Gå til innhold

Anbefalte innlegg

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
Videoannonse
Annonse
Jeg eller Python som ikke klarte å gjøre jobben skikkelig?

 

Det er nok deg :wee:

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 av snippsat
Lenke til kommentar

 

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...