3

Going through Learn Python the Hard Way, lesson 25.

I try to execute the script, and the result is like so:

myComp:lphw becca$ python l25 

myComp:lphw becca$ 

Nothing prints or displays in terminal.

Here's the code.

def breaks_words(stuff): 
    """This function will break up words for us."""
    words = stuff.split(' ')
    return words 

def sort_words(words):
    """Sorts the words."""
    return sorted(words)

def print_first_word(words):
    """Prints the first word after popping it off."""
    word = words.pop(0)
    print word

def print_last_word(words):
    """Prints the last word after popping it off."""
    word = words.pop(-1)
    print word

def sort_sentence(sentence): 
"""Takes in a full sentence and returns the sorted words."""
    words = break_words(sentence)
    return sort_words(words)

def print_first_and_last(sentence):
    """Prints the first and last words of the sentence."""
    words = break_words(sentence)
    print_first_word(words)
    print_last_word(words)

def print_first_and_last_sorted(sentence):
    """Sorts the words then prints the first and last one."""
    words = sort_sentence(sentence)
    print_first_word(words)
    print_last_word(words)

Please help!

1
  • 1
    What is the code supposed to be printing? Commented Apr 28, 2012 at 21:42

2 Answers 2

12

All your code is function definitions, but you never call any of the functions, so the code doesn't do anything.

Defining a function with the def keyword just, well, defines a function. It doesn't run it.

For example, say you just have this function in your program:

def f(x):
    print x

You're telling the program that whenever you call f, you want it to print the argument. But you're not actually telling it that you want to call f, just what to do when you do call it.

If you want to call the function on some argument, you need to do so, like this:

# defining the function f - won't print anything, since it's just a function definition
def f(x):
    print x
# and now calling the function on the argument "Hello!" - this should print "Hello!"
f("Hello!")

So if you want your program to print something, you need to put in some calls to the functions you defined. What calls and with what arguments depends on what you want the code to do!

Sign up to request clarification or add additional context in comments.

2 Comments

Gah. Duh. I got confused because he said, "First, run this like normal with python ex25.py to find any errors you have made." I figured this meant it should display /something/.
@user1186742 If you had syntax errors etc, then running the code would find them - that's probably what was meant.
0

You can execute that file in interative mode

python -i l25

And then on python prompt call your functions

words = ["Hello", "World"]
print_first_word(words)

Please install ipython for nicer user interaction

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.