FAQ: Learn Python - Pyglatin - Ending Up

This community-built FAQ covers the “Ending Up” exercise in Codecademy’s lessons on Python.

FAQs for the Codecademy Python exercise Ending Up:

Join the Discussion. We Want to Hear From You!

Have a new question or can answer someone else’s? Reply (reply) to an existing thread!

Agree with a comment or answer? Like (like) to up-vote the contribution!

Need broader help or resources about Python in general? Go here!

Want to take the conversation in a totally different direction? Join our wider discussions.

Learn more about how to use this guide.

Found a bug? Report it!

Have a question about your account, billing, Pro, or Pro Intensive? Reach out to our support team!

None of the above? Find out where to ask other questions here!

Other FAQs

The following are links to additional questions that our community has asked about this exercise:

  • This list will contain other frequently asked questions that aren’t quite as popular as the ones above.
  • Currently there have not been enough questions asked and answered about this exercise to populate this FAQ section.
  • This FAQ is built and maintained by you, the Codecademy community – help yourself and other learners like you by contributing!

Not seeing your question? It may still have been asked before – try (search) in the top-right of this page. Still can’t find it? Ask it below by hitting the reply button below this post (reply).

2 posts were split to a new topic: “String Index Out of Range” Error

I don’t understand the second part of the example in this lesson:

s = "Charlie"

print s[0]
# will print "C"

print s[1:4]
# will print "har"

Why when we write

print s[1:4]

It returns only 3 letters (har), but not 4 letters (harl) from the example word above…

[0] = C
[1] = H
[2] = A
[3] = R
[4] = L

It stops TIL position 4, meaning [4] does not get processed.
[0:1] would give you C

Hi,
I am confused by the slice on ‘new_word’.
What we want is the ‘rest’ of word,
word[1:len(word)]
isn’t it?
So, mutating new_word seems a bad idea, and I guess it only works because at the time
new_word = word[1:len(new_word)]...
is called, new_word does not have a length yet,
so - the slice goes to the end of word because in fact no second slice parameter is given??
If new_word already existed, it would contain ‘ay’ etc and would be longer than ‘word’.

So, my question is, should we not better use
new_word = word[1:len(word)]
? Thanks.

7 Likes

I felt like this was a logical problem, too.

EDITED

By saying that new_word is word plus a slice of new_word, we’re using the variable to define itself. I first tried this and it didn’t work. It ran when I replaced “new_word” with just “word.”

My edit is because I said it still worked somehow, but really it didn’t and I was a bit gaslighted because it saved the working code when I ran it again instead of updating it. I refreshed the page and ran the code again with “new_word” and it ran the following error:

Traceback (most recent call last): File “python”, line 9, in <module> NameError: name ‘new_word’ is not defined

So there you go.

2 Likes

I had a question, but just figured it out. Instead of deleting I’ll just leave this below in case anyone else makes the same mistake (which is actually a really simple one!)

Every time I put “new_word = [1:len(new_word)]” into the code
I receive an error message in the console:
new_word = new_word[1:len(new_word)]
^
(for the sake of clarity, the carrot is pointing to the “:”, I tried spacing it out correctly, but once it posts to the forums the carrot goes back to the beginning of the line)

Here is the full if statement with the problem
if len(original) > 0 and original.isalpha():
word = original.lower()
first = word[0]
new_word = [word + first + pyg]
new_word = new_word[1:]
print original

While the above code didn’t work, one I removed the brackets around [word + first + pig] in line 4, the code ran fine. Still trying to understand exactly why that is (I have an idea as to why that might cause an error, but I’m a little confused as to why it caused the particular error that it did). Anyways, if you run into this same problem remove the brackets around [word + first + pig] and your code should run fine.

if len(original) > 0 and original.isalpha():
word = original.lower()
first = word[0]
new_word = word + first + pyg
new_word = new_word[1:]
print original

3 Likes

Why do I have to set new_word equal to the slice [1:len(new_word)]?
I can set it only on print command and it works the same:
print new_word[1:len(new_word)]

3 Likes

This makes so much more sense and fixed the issue. Thank you!

1 Like

Hello all,

I am trying to find out what is wrong with my code compared to the correct one. I really can not find the difference and so the answer.

Thanks a lot for your help.

My code (incorrect one)

pyg = 'ay'

original = raw_input('Enter a word:')

if len(original) > 0 and original.isalpha():
  word = original.lower()
  first = word[0]
  new_word = word + first + pyg
  new_word = [1:len(new_word)]
else:
  print 'empty'

===============================================================

Solution code

pyg = 'ay'

original = raw_input('Enter a word:')

if len(original) > 0 and original.isalpha():
  word = original.lower()
  first = word[0]
  new_word = word + first + pyg
  new_word = new_word[1:len(new_word)]
else:
    print 'empty'
# your code
new_word = [1:len(new_word)]
# solution code
new_word = new_word[1:len(new_word)]

you don’t specify what you want to take a slice of.

3 Likes

Thank you. I only now see the difference…maybe I have been coding too long for today :slight_smile:

Hey, so i just finished my code and checked it several times, comparing it to the solutions below this thread but it still doesn’t work!
This is my code:

pyg = ‘ay’
original = raw_input(‘Enter a word:’)

if len(original) > 0 and original.isalpha():
print original
word = original.lower()
first = word[0]
new_word = word + first + pyg
new_word = new_word[1:len(new_word)]
else:
print “empty”

Now if I run it and enter the message e.g. “Hello” it simply answers “Hello” aswell…

Edit:
so i redid all the steps and wont delete this in case someone happens to do thje same mistake -> so i left the definition of new_word as part of the if condition

that is good? We only want new word when user input is valid

you simple forgot to change print original (which contains the original user input) to print new_word (this should be done at the right place)

Thank you. That was the one thing I kept missing. I had to ask it to print the “New Word” instead of the “Original”. That was the one thing I was missing. Thank you.

I don’t understand why I am getting this error?

new_word variable need to contain the right string. As mentioned in the instruction, you need to slice new_word (all the way to the end of new_word), while you do all the way to the end of word

So for several steps now I have the problem of following error message popping up even when I use the code given as the solution

Could someone please explain to me what I´m doing wrong? I can still progress in the lesson however it is a bit frustrating to not be able to test your code and see what you just made…

1 Like

Why I am getting this error “It looks like you printed the correct translation of “python”, but make sure to set new_word equal to the slice as well.” I could not understand ??

My code is :

pyg = ‘ay’

original = raw_input(‘Enter a word:’)

if len(original) > 0 and original.isalpha():

word = original.lower()

first = word[0]

print first

new_word = word[1:len(word)]

print new_word+first+pyg

else:

print ‘empty’