Search code examples
if-statementstatements

Using If and Else statements in Ruby


Very new to the world of programming and just starting to learn, working through Flatiron School prework and have been doing ok but unable to understand "if" and "else" statements for some reason. The problem is similiar to Chris Pine 'deaf grandma' problem but without saying "BYE!" three times.

~The method should take in a string argument containing a phrase and check to see if the phrase is written in all uppercase: if it isn't, then grandma can't hear you. She should then respond with (return) HUH?! SPEAK UP, SONNY!.

~However, if you shout at her (i.e. call the method with a string argument containing a phrase that is all uppercase, then she can hear you (or at least she thinks that she can) and should respond with (return) NO, NOT SINCE 1938!

I have so far:

def speak_to_grandma
  puts "Hi Nana, how are you?".upcase 
  if false  
puts "HUH?! SPEAK UP, SONNY!"
  else 
    puts "NO, NOT SINCE 1938!"
  end
end

but am getting wrong number of arguments...how am I supposed to add argument while using the if/else statements? This is probably a very easy and basic question but can't seem to get my head around this (overthinking probably).
Any help and clarity would be greatly appreciated.


Solution

  • input_phrase = "Hi Nana, how are you?"
    def speak_to_grandma(phrase)  
      # Check if string equals same phrase all upper case letters, which means string is all uppercase
      if phrase == phrase.upcase 
        # return this string if condition is true 
        puts "NO, NOT SINCE 1938!"
      else 
        # return this string if condition is false 
        puts "HUH?! SPEAK UP, SONNY!"
      end
    end
    
    # execute function passing input_phrase variable as argument
    speak_to_grandma(input_phrase)
    

    how am I supposed to add argument while using the if/else statements? This is probably a very easy and basic question but can't seem to get my head around this (overthinking probably).

    Your mistake was that function was not accepting any arguments, here it accepts "phrase" variable as argument and processes it:

     def speak_to_grandma(phrase) 
    

    You had

     if false
    

    but did not check what exactly is false.. To rewrite my version with "false" :

    input_phrase = "Hi Nana, how are you?"
    def speak_to_grandma(phrase)  
      # Check if it is false that string is all upper case
      if (phrase == phrase.upcase) == false
    
        # return this string if condition is false                
         puts "HUH?! SPEAK UP, SONNY!"        
          else 
        # return this string if condition is true 
          puts "NO, NOT SINCE 1938!"
      end
    end
    
    speak_to_grandma(input_phrase)
    

    Here I am evaluating

    if  (phrase == phrase.upcase) == false
    

    Basically means "if expression that phrase equals phrase all uppercase is false"