FAQ: Redacted! - Control Flow Know-How

This community-built FAQ covers the “Control Flow Know-How” exercise from the lesson “Redacted!”.

Paths and Courses
This exercise can be found in the following Codecademy content:

Learn Ruby

FAQs on the exercise Control Flow Know-How

There are currently no frequently asked questions associated with this exercise – that’s where you come in! You can contribute to this section by offering your own questions, answers, or clarifications on this exercise. Ask or answer a question by clicking reply (reply) below.

If you’ve had an “aha” moment about the concepts, formatting, syntax, or anything else with this exercise, consider sharing those insights! Teaching others and answering their questions is one of the best ways to learn and stay sharp.

Join the Discussion. Help a fellow learner on their journey.

Ask or answer a question about this exercise by clicking reply (reply) below!

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

Need broader help or resources? Head here.

Looking for motivation to keep learning? Join our wider discussions.

Learn more about how to use this guide.

Found a bug? Report it!

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

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

Why does using do-end not work for this exercise? The solution uses both {} and end. Why?


I am confused about an error message I am receiving. Below is my code:

puts "Enter some text: "
text = gets.chomp
puts "Enter redacted word:"
redacted = gets.chomp
words = text.split(" ")
words.each do |word|
  if word == redacted
    print "REDACTED "
    print word + " "

and here is the output on the screen:

Enter some text: 
the quick brown fox jumps over the lazy dog
Enter redacted word:
REDACTED quick brown fox jumps over REDACTED lazy dog

and here is the error message I am getting:

Make sure to print each word from the user's text to the console unless that word is the word to be redacted; if it is, print REDACTED (all caps!).

What am I doing wrong?


This seems to be a very counter-intuitive “bug” in the validator. I just noticed that it is explicitly looking for a variable called “redact”

my code is:

puts "Enter a string: "
text = gets.chomp
puts “Enter the redacted word: "
redacted = gets.chomp <-------- Notice how my variable is called “redacted”
words = text.split(” ")
words.each do |word|
if word == redacted
print "REDACTED "
print word + " "

once I changed the variable name to “redact” the validator passed my code. I believe it should not be like that, or at least instructions about the variable name should be present in the reading

From the lesson instructions:


Getting the User’s Input

First things first: we’ll need to get the user’s input.



Use puts to prompt the user for input two times. For the first puts , declare a variable called text and set it equal to the user’s input via gets.chomp .

For the second puts , declare a variable called redact and set it equal to the user’s input using gets.chomp .

Many of the lessons on Codecademy require specific items (variable names, syntax, formatting, etc.). Imagine if you were writing the SCT code, and had to account for every possible name or method a person could come up with. I’ll admit it can be annoying at times when we write code that works, but isn’t accepted because it isn’t exactly what the SCT is looking for, but that’s just part of it. One thing it accomplishes though, is teaching us to pay very close attention to detail. Happy Coding!

Thank you for your answer.

I would like to point out that these instructions, although they answer our questions and solve our doubts are not the ones for this assignment. The one you mentioned is the first one from this lesson. However, when it comes to the specific assignment there is no reminder of this detail.

This might be what cause the confusion.