Hello,
I am just learning Ruby, via several resources (online: Why's,
downloaded PDF's, and Chris Pine's book "Learn to Program Ruby"). I
finished Chris Pine's book and was going back through doing any of the
exercises I hadn't done the first time and trying to mess with/break the
programs I had done the first time through.
In looking back over my code and trying to clean things up, I managed to
think of two good questions I can't seem to find the answer to
elsewhere. I figured this was the brightest and smartest group of
Ruby-heads out there.
I'll ask my questions first and put the code from the program down
below. The assignment asked us to create a "Deaf Grandmother" program,
which you could only get out of by saying "BYE" to in all caps, three
times.
The first question I had was, for some reason, if you input "BYE!" for
the second or third required "BYE" (to exit/end the program), it
launches into an infinite loop. Why is that? BYE works correctly.
What is it about "BYE!"?
Second question is... what if I wanted the program to require you to say
"BYE" three times in a row instead of just three times throughout the
conversation. Is there any easy way to do this?
Okay, thanks for your time, the code from the program is below..
[code]
talk = 'I <3 my grandmother'
puts 'WHAT A FINE YOUNG GRANDCHILD YOU ARE, COME TO VISIT YOUR DEAR OLD
GRANNY! COME IN, COME IN!'
while talk != 'BYE'
talk = gets.chomp
if talk != talk.upcase
puts 'HUH?! SPEAK UP, SONNY!'
elsif talk == talk.upcase && talk != 'BYE'
year = 1
while year < 30
year = rand(51)
end
puts 'NO, NOT SINCE 19' + year.to_s + '!'
end
end
if talk == 'BYE'
puts 'WHAT WAS THAT?'
talk = gets.chomp
while talk != 'BYE'
if talk != talk.upcase
puts 'HUH?! SPEAK UP, SONNY!'
elsif talk == talk.upcase && talk != 'BYE'
year = 1
while year < 30
year = rand(51)
end
puts 'NO, NOT SINCE 19' + year.to_s + '!'
end
end
if talk == 'BYE'
puts 'EYE? WHAT\'S WRONG WITH YOUR EYE?'
talk = gets.chomp
while talk != 'BYE'
if talk != talk.upcase
puts 'HUH?! SPEAK UP, SONNY!'
elsif talk == talk.upcase && talk != 'BYE'
year = 1
while year < 30
year = rand(51)
end
puts 'NO, NOT SINCE 19' + year.to_s + '!'
end
end
if talk == 'BYE'
puts 'OH VERY WELL, SEE YOU ANOTHER TIME, THEN!'
end
end
end
[/code]
···
--
Posted via http://www.ruby-forum.com/.