본문 바로가기

Back-End/Ruby

[Ruby] Codecademy - 4. Thith Meanth War!

1. 여러분이 만들 것은..

if/else 명령문을 사용하여 프로그램을 제어함으로써, 이제 여러분은 사용자의 다른 입력값을 바탕으로 각기 다른 결과값에 이르도록 만들 수 있습니다.

이번 프로젝트에서는 흐름 제어와 루비의 몇 가지 새로운 문자열 메소드를 조합하여 "s"를 "th"로 바꾸는 연습을 해봅시다.


2. 사용자로부터 입력값(Input) 받기

제일 처음으로, 사용자들에게 입력값을 요구하는 문장을 출력하도록 print 명령문을 작성하세요. 그런 다음, gets.chomp를 사용하여 입력값을 받아 변수에 저장하세요.

1
2
print "input please: "
user_input = gets.chomp
cs


3. 소문자로!

사용자의 입력값에서 대문자와 소문자를 모두 고려해야 하므로, "S"와 "s" 두 경우를 전부 다뤄야 합니다. 이를 위해 각각의 if/else 명령문을 만들어도 되지만, 입력값을 모두 소문자로 변환해주는 .downcase!메소드를 사용해도 됩니다. 이 메소드를 사용함으로써 우리는 오직 "s"만 찾으면 되는 거죠.

1
2
3
print "input please: "
user_input = gets.chomp
user_input.downcase!
cs


4. 'if' 분기(Branch) 설정하기, Part 1

좋습니다! 간단한 흐름 제어를 추가할 시간입니다.

분기(branch)의 절반을 차지하는 if 부분에서는 사용자의 입력값에 소문자"s"가 포함되어 있는지 여부를 확인할 것입니다. 루비의.include?메소드를 사용하여 이를 확인할 수 있습니다. 이 메소드는 찾는 문자열이 있을 경우 결과로true값을, 그렇지 않을 경우false값을 반환합니다. (일반 규칙에 따라,?기호로 끝나는 루비의 메소드들은 결과로 불린값true또는false`를 반환합니다.)

문법은 다음과 같습니다:

    if string_to_check.include? "substring(찾을 문자열)"

위의 코드에서 stringstocheck는 찾을 범주가 되는 문자열(혹은 문자열이 담긴 변수), 그리고 substring은 찾을 문자열을 나타냅니다.


5. 'if' 분기(Branch) 설정하기, Part 2

좋습니다! 이제 작성해둔 if 명령문을 완성시켜 봅시다.

문자열에서 "s"를 발견할 때마다, 루비가 해당 "s"를 모두 "th"로 바꾸도록 만들어야 합니다. 이는 .gsub! 메소드를 사용하여 해결할 수 있는데요, global substitution, 즉 전역치환이라는 뜻입니다.

문법은 다음과 같습니다:

string_to_change.gsub!(/s/, "th")

위 코드의 /s/ 부분에서 문자 주변을 따옴표 대신 슬래쉬로 감싼 이유는 이후 수업에서 설명해 드리겠습니다. 주의: gsub! 부분과 소괄호 부분 사이에 공백을 둘 수 없습니다.

기억하세요, 메소드의 끝에 !를 포함하여 루비가 문자열 원본을 수정하도록 만들어야 합니다.

1
2
3
4
5
6
print "input please: "
user_input = gets.chomp
user_input.downcase!
if user_input.include? "s"
    user_input.gsub!(/s/"th")
end
cs


6. 'Else' 분기(Branch) 설정하기

어려운 부분은 끝났습니다! 이제 남은 건 문자열에서 "s"를 하나도 발견하지 못했을 때, 사용자들에게 이를 알리기만 하면 됩니다.

1
2
3
4
5
6
7
8
print "input please: "
user_input = gets.chomp
user_input.downcase!
if user_input.include? "s"
    user_input.gsub!(/s/"th")
else
    print "no exist"
end
cs


7. 마지막 문자열 반환하기

마지막 문자열을 사용자들에게 보여줄 차례입니다. 이를 위해선 이전에 배웠던 string interpolation을 사용하면 됩니다:

my_string = "muchachos"
print "Adios, #{my_string}!"
# ==> "Adios, muchachos!"
1
2
3
4
5
6
7
8
9
10
print "input please: "
user_input = gets.chomp
user_input.downcase!
if user_input.include? "s"
    user_input.gsub!(/s/"th")
else
    print "no exist"
end
 
puts "Your string is: #{user_input}"
cs



Ruby 실습하기 : https://www.codecademy.com/en/tracks/ruby-ko