Forum: Ruby simple ruby program problem

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Hunter W. (Guest)
on 2009-01-23 01:42
So I have been reading Chris P.'s book, "Learn to Program".  I am
working through the examples and the "a Few Things to Try" sections at
the end of each chapter.  I having a problem with one of them.

Here is the chapter: http://pine.fm/LearnToProgram/?Chapter=08

Basically, he wants you to write the psych question program w/o using
the variables good_answer and answer.  I tried to do this in the code
below, however, when I run it in TextMate and the gets asks me for input
before puts lists the question.  In other words, the first thing that
happens after I run it is the "Script is requesting input" message box.

I will note this: every now and then, the program will work properly,
but this is usually after I run the program for the first after opening
Textmate for the first time.

Thanks for your help!!


# begin code here
def ask question

  reply = ''

  while (reply != 'yes' || reply != 'no')

     puts question

     reply = gets.chomp.downcase


     if reply == 'yes'
       return true

     elsif reply == 'no'
       return false

     end

     puts 'Please answer yes or no!'

  end

end


puts

ask 'do you like apples?'
wets_bed = ask 'do you wet the bed?'

puts

puts wets_bed

# end of code
Rob B. (Guest)
on 2009-01-23 02:03
(Received via mailing list)
On Jan 22, 2009, at 6:40 PM, Hunter W. wrote:

>  while (reply != 'yes' || reply != 'no')


Well, this is effectively and infinite loop becasue reply will always
be != to one or the other and the whole expression will be true.

Since you have a return statement in a couple places, this might not
be a problem for this program.

-Rob

Rob B.    http://agileconsultingllc.com
removed_email_address@domain.invalid
Hunter W. (Guest)
on 2009-01-23 02:58
Attachment: post.jpg (0 Bytes)
Rob B. wrote:
> On Jan 22, 2009, at 6:40 PM, Hunter W. wrote:
>
>>  while (reply != 'yes' || reply != 'no')
>
>
> Well, this is effectively and infinite loop becasue reply will always
> be != to one or the other and the whole expression will be true.
>
> Since you have a return statement in a couple places, this might not
> be a problem for this program.
>
> -Rob
>
> Rob B.    http://agileconsultingllc.com
> removed_email_address@domain.invalid

Yeah, good point.  You are right though, the return statement does stop
the loop.  See attached screen shot for what happens....
Rob B. (Guest)
on 2009-01-23 03:15
(Received via mailing list)
On Jan 22, 2009, at 7:57 PM, Hunter W. wrote:

>> be a problem for this program.
> Attachments:
> http://www.ruby-forum.com/attachment/3196/post.jpg

Try running directly from an xterm (Terminal) window.  I suspect that
running inside TextMate is the cause of the trouble (and that your
script wants input).

-Rob

Rob B.    http://agileconsultingllc.com
removed_email_address@domain.invalid
Hunter W. (Guest)
on 2009-01-23 22:01
Rob B. wrote:
> On Jan 22, 2009, at 7:57 PM, Hunter W. wrote:
>
>>> be a problem for this program.
>> Attachments:
>> http://www.ruby-forum.com/attachment/3196/post.jpg
>
> Try running directly from an xterm (Terminal) window.  I suspect that
> running inside TextMate is the cause of the trouble (and that your
> script wants input).
>
> -Rob
>
> Rob B.    http://agileconsultingllc.com
> removed_email_address@domain.invalid

You are correct, Rob.  Works every time in xterm.  Thank you for the
help.
This topic is locked and can not be replied to.