Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialDaniel Deiana
11,341 Pointsreverse_evens task
Hello I'm quite stuck and having a bad time with reverse step slices! So I've written some nasty code to try and get past the question but it's not passing which I'm not shocked about as I'm sure there is a very simple 2-3 line answer which I'm missing. I'm sure the if statement block passes but I figured I would need a different start point if the length of the iterable was modular zero. But as I say I'm having a bad time with reverse slices and I've probably missed the point somewhere. sorry for the bother
def first_4(iterable):
return iterable[:4]
def first_and_last_4(item):
return item[:4] + item[-4::1]
def odds(item):
return item[1::2]
def reverse_evens(item):
if len(item) % 2 == 1:
return item[::-2]
elif len(item) % 2 == 0:
return_item = ""
for character in item[::-1]:
if not character in item[::-2]:
return_item += character
return return_item
2 Answers
Steven Parker
231,236 PointsYes, you're working too hard.
Your first two lines put you halfway there with the if test and returning the slice with a -2 step. Now you just need an else with a similar return, but this time using a start index that points the the item just before the last one.
I'll bet you can get it now.
Jason Anello
Courses Plus Student 94,610 PointsHi Daniel,
Another approach you could take is to do a slice of a slice. The first slice gets the even indexes and the second slice reverses it. This will run a little slower but has the advantage of not having to worry about whether you have an odd or even length iterable.
def reverse_evens(iter1):
return iter1[::2][::-1]
Daniel Deiana
11,341 PointsVery clever! Thanks Jason
Daniel McFarlin
5,168 PointsJason Anello, I just tried the way you put here and it didn't pass...unless there is typo here I'm not sure that will work :(
Jason Anello
Courses Plus Student 94,610 PointsDid you type it out or copy/paste it?
I just ran through it again and copy/pasted it in and it passed for me.
Daniel McFarlin
5,168 PointsI guess there was space that got in there somehow lol cause I went back and did it again and it worked. I take back my comment.
Daniel Deiana
11,341 PointsDaniel Deiana
11,341 PointsThanks for your reply Steven, got it!!
Steven Parker
231,236 PointsSteven Parker
231,236 PointsGlad to help!
Happy coding!