2010-10-06 9 views
8

Ok, sto cercando di scrivere una simulazione rubino di mia nonna. Non riesco a far funzionare il ciclo come preferisco. Voglio nonna a rispondere conRuby Loops con la nonna

"OH, che mi ricorda INDIETRO NEL (anno casuale) ..."

quando lei si risponde in tutte le protezioni, ma voglio anche lei a rispondere con

"CHE COSA DICI ????"

quando non si utilizzano tutti i tappi. Posso convincere ognuno a lavorare separatamente, ma non riesco a creare un ciclo continuo di nonna con le sue folli risposte. Ecco il codice:

puts 'HELLO SONNY! WHAT\'S NEW IN THE WHO\'S IT WHAT\'S IT?' 
response = gets.chomp 

while response == response.upcase 
    puts 'OH, THAT REMINDS ME OF BACK IN ' + (rand(50) + 1905).to_s + '...' 
    response = gets.chomp 
end 

while response != response.upcase 
    puts 'WHAT\'D YOU SAY????' 
    response = gets.chomp 
end 

Qualche idea?

+3

Scendete dal mio prato! –

+0

Dato che ovviamente hai appena iniziato a imparare Ruby (ho iniziato con lo stesso tutorial), volevo solo sottolineare che non devi sfuggire ai caratteri in una stringa se usi virgolette doppie "" invece di virgolette singole. È conveniente in situazioni semplici come queste. –

risposta

7

Il problema è che una volta usciti dal primo ciclo, non si ritorna mai indietro. Provare qualcosa di simile:

while true 
    response = gets.strip 
    if response == response.upcase 
    puts msg1 
    else 
    puts msg2 
    end 
end 

Che sarà correre per sempre, fino a quando si decide di uccidere virtuale-nonna con Ctrl-C.

+0

Grande, che l'ha fissata! Qualunque lato positivo nell'usare .strip su .chomp? – 585connor

+0

Mi piace perché fa sia lo spazio bianco iniziale che quello finale di qualsiasi tipo, in cui il chomp non fa altro che togliere i newline finali. In questo caso, però, non ne hai davvero bisogno. – perimosocordiae

+0

"kill virtual-granny" - è solo sbagliato ... –

0

Questo programma funziona, anche se sono un noob, quindi potrebbe non essere il modo migliore. Inoltre la mia matematica è più creativa che pratica, gli altri ragazzi sono molto meglio. :)

puts 'Talk to your grandma!' 

while true 
    say = gets.chomp 

    if say == say.downcase 
    puts 'WHAT DID YOU SAY? SPEAK UP!' 

    else say == say.upcase 
    puts "NO HONEY, NOT SINCE 19" + (rand(90) + 10).to_s 

    end 

    break if say == 'bye'.upcase 

end