From: Nigama Xx Date: 2007-12-08T04:12:48+09:00 Subject: Ruby Nuby Question 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/.