Let's practice interacting with Hashes (key-value pairings) by writing a program that creates hashes, stores data in hashes, retrieves data from hashes, and prints the contents of a hash.
Take a look at mood-analysis.rb.
Explain what is happening on each of the following lines in the code.
Line # | What's happening? |
---|---|
1 | |
2 | |
3 | |
6 | |
7-8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
18-24 |
What's the Data Type of the following?
Code | Data Type |
---|---|
FEELINGS | |
:sad | |
happy | |
words | |
words.split(" ") | |
FEELINGS[:sad] | |
FEELINGS[:happy].include? | |
analyze_mood(text) |
Question | Answer |
---|---|
Why do we need line 9? | |
What is the relationship between words and word (line 10)? |
|
Why doesn't line 22 have an associated if/condition? | |
What is the relationship between text[0] , text[1] , and words ? |
- Replace lines 36 and 37 and write a loop to print out each day and the emoticon that is associated by analyzing the mood of that day.
Your result will look like:
03/01 :-(
03/13 :-|
...
think: Why does 03/13 come out as neutral when it should be happy? How could we fix this?
- To make the results a little more accurate, let's write and utilize a method called
strip_punctuation
to strip out the punctuation that affects the results. Namely, remove exclamation marks (!), periods (.), commas (,), and hashtags (#).
Your method should take a string as an argument and return the string without the above mentioned punctuation.
After writing this method, our new result should be:
03/01 :-(
03/13 :-)
...
think: Where should we call strip_punctuation
? Does it matter? Why?
- Write a method called
happy_days
to determine how many logged entries it takes until there have been three :-) happy days.
Your output could be something like:
It takes 5 entries for 3 happy days to occur
think: What are you going to do if there aren't at least 3 happy days? Where do you need to handle that case?
- Write a method called
overall_mood
to determine the most common mood across all logged entries.
Your output could be something like:
The most common mood is :-)
think: Should you use an array or a hash to solve this problem? Why?
think: What if we eventually want to add feelings to our analysis? Can we write this code in a way that will prevent us from having to re-write it later?