Python Forum
Trying to find first 2 letter word in a list of words
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Trying to find first 2 letter word in a list of words

I am trying to get this function working but cannot work out what is wrong. Any help will be gratefully received. My input is:

xs = ["this", "is", "a", "dead", "parrot"]

def find_first_2_letter_word(xs):
    for wd in xs:
        if len(wd) == 2:
            return wd
        return " "
print("The first 2 letter word is ", find_first_2_letter_word(xs))
My output is:
Python 3.8.4 (tags/v3.8.4:dfa645a, Jul 13 2020, 16:46:45) [MSC v.1924 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license()" for more information. >>> ================== RESTART: C:\Users\John\Desktop\ ================== The first 2 letter word is >>>
As can be seen the program prints the statement but fails to show the first 2 letter word.

Thank you
Hint: what happens on the first iteration of the for loop (i.e. when wd is "this")?
Hello ndc85430

I am trying to teach myself Python from How to Think Like a Computer Scientist so I must admit to being very much a tyro, please forgive my lack of knowledge. Now answering your hint I think that the first iteration passing over "this" produces a False and so the function should continue on to the second word in the list "is", which is a 2 letter word so the function should return True and stop iterating at that point and move to the print command outputting "The first 2 letter word is is". I still cannot see why the function does not do this.

Quote:first iteration passing over "this" produces a False and so the function should continue on to the second word in the list "is",

This is not happening, hence the code does not work.

The following loop:
for wd in xs:
        if len(wd) == 2:
            return wd
        return " "
will not loop through the whole list simply because the code checks:
if len(wd) == 2:

- the condition is not met since ,,this,, is 4 characters long.

Therefore the code moves on to:
return " "
- this simply exits the for loop returning empty string " " and the code then moves on to:
print("The first 2 letter word is ", find_first_2_letter_word(xs))
You do not want to exit the loop after the first iteration :) Delete/comment out the line that makes the loop exit and the code should work.
Hint in more direct flavour: first word will return either word itself (if length is 2) or empty string. For-loop never reaches the second word. Remedy: move return of empty string out of for-loop.
I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy

Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame.
Hello IntrOspective

Very helpful and informative thank you for your time and interest. I have learnt something there. I am using How to Think Like a Computer Scientist to teach myself Python and in that book they stated the function, including the 'return " "'. I find that quite misleading.

Thanks again
No worries,

Since you mentioned that the code comes from the book - i have just had a look at it again - in fact you can get the code working with ,,return " ",, too.

Have a look at the code in your book and see how exactly is ,,return " ", indented..
The way it was indented in your original code it was in fact part of the loop and hence causing trouble.

Therefore, the code in book is not necessarily misleading :)
Hello IntrOspective

I have only just seen this - thank you for your continued support.

I have looked in the book and it took me some time to spot it but you are correct, thank you.

I am really struggling to get my head around writing programmes with functions and now have had to seek help on my latest attempt in trying to compute a distance.

Never mind onwards it is.

Possibly Related Threads…
Thread Author Replies Views Last Post
  Find the highest value of a list Menthix 4 391 Oct-29-2021, 02:32 PM
Last Post: Menthix
Question Problem: Check if a list contains a word and then continue with the next word Mangono 2 792 Aug-12-2021, 04:25 PM
Last Post: palladium
  Generate a string of words for multiple lists of words in txt files in order. AnicraftPlayz 2 670 Aug-11-2021, 03:45 PM
Last Post: jamesaarr
  Find Common Elements in 2 list quest 4 1,154 Apr-14-2021, 03:57 PM
Last Post: quest
  Function to count words in a list up to and including Sam Oldman45 13 2,126 Feb-18-2021, 10:22 AM
Last Post: perfringo
  Trying to get the first letter of every word in a list DanielCook 2 931 Jan-05-2021, 05:06 PM
Last Post: deanhystad
  List of error codes to find (and count) in all files in a directory tester_V 8 1,535 Dec-11-2020, 07:07 PM
Last Post: tester_V
  Find _ in a list 1234 15 2,182 Dec-01-2020, 07:53 PM
Last Post: bowlofred
  how to check if string contains ALL words from the list? zarize 6 2,434 Jul-22-2020, 07:04 PM
Last Post: zarize
  How to find the first and last of one of several characters in a list of strings? tadsss 2 1,056 Jun-02-2020, 05:23 PM
Last Post: bowlofred

Forum Jump:

User Panel Messages

Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020