3
votes

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!

2
What is the code supposed to be printing? - weronika

2 Answers

12
votes

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!

0
votes

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