simple ruby program problem

Discussion in 'Ruby' started by Hunter Walker, Jan 22, 2009.

  1. So I have been reading Chris Pine'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
    --
    Posted via http://www.ruby-forum.com/.
     
    Hunter Walker, Jan 22, 2009
    #1
    1. Advertising

  2. On Jan 22, 2009, at 6:40 PM, Hunter Walker 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 Biedenharn http://agileconsultingllc.com
     
    Rob Biedenharn, Jan 22, 2009
    #2
    1. Advertising

  3. Rob Biedenharn wrote:
    > On Jan 22, 2009, at 6:40 PM, Hunter Walker 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 Biedenharn http://agileconsultingllc.com
    >


    Yeah, good point. You are right though, the return statement does stop
    the loop. See attached screen shot for what happens....

    Attachments:
    http://www.ruby-forum.com/attachment/3196/post.jpg

    --
    Posted via http://www.ruby-forum.com/.
     
    Hunter Walker, Jan 23, 2009
    #3
  4. On Jan 22, 2009, at 7:57 PM, Hunter Walker wrote:

    > Rob Biedenharn wrote:
    >> On Jan 22, 2009, at 6:40 PM, Hunter Walker 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 Biedenharn http://agileconsultingllc.com
    >>

    >
    > Yeah, good point. You are right though, the return statement does
    > stop
    > the loop. See attached screen shot for what happens....
    >
    > 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 Biedenharn http://agileconsultingllc.com
     
    Rob Biedenharn, Jan 23, 2009
    #4
  5. Rob Biedenharn wrote:
    > On Jan 22, 2009, at 7:57 PM, Hunter Walker 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 Biedenharn http://agileconsultingllc.com
    >


    You are correct, Rob. Works every time in xterm. Thank you for the
    help.
    --
    Posted via http://www.ruby-forum.com/.
     
    Hunter Walker, Jan 23, 2009
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    7
    Views:
    651
    Stig Brautaset
    Jul 23, 2003
  2. Replies:
    10
    Views:
    568
    Dennis Lee Bieber
    Aug 15, 2006
  3. Replies:
    14
    Views:
    545
    Karl Heinz Buchegger
    Nov 2, 2005
  4. RichardOnRails
    Replies:
    3
    Views:
    135
    RichardOnRails
    Jul 21, 2008
  5. Evan Riley
    Replies:
    5
    Views:
    125
    Evan Riley
    Sep 7, 2010
Loading...

Share This Page