2016-10-18 4 views
0

Ich versuche eine Schleife zu erstellen, die den Benutzer nach einer Ganzzahl fragt und dann "hi" eine ganzzahlige Anzahl von Malen ausgibt und dann erneut nach Eingabe fragt. Ich möchte dann, dass die Schleife bricht, wenn der Benutzer "tschüss" eingibt.Ich kann eine Schleife nicht unterbrechen, die wiederholt nach Benutzereingaben fragt. Weiß jemand, wie man das löst?

mein Code so weit:

def hi_hi_goodbye 
    loop do 
    number = gets 

     (number.to_i).times do 
      print "hi" 
     end 

     break if 
      gets == "bye" 
     end 

end 

Mein Code so weit wird nicht Schleife. Es empfängt die Ganzzahl und gibt "hi" eine bestimmte Anzahl von Malen aus. Ich bin jedoch nicht in der Lage, die Schleife zu durchbrechen.

+0

also, wo ändern Sie tatsächlich "bekommt"? –

+1

Nach dem Aussehen Ihres Codes, haben Sie einen SyntaxError, der etwas über 'end' aussagte und so haben Sie' end's überall hinzugefügt, bis der Fehler weg ist. Aber was genau ist das 'Ende' in' print "hi" end' doing? Was ist das vorletzte "Ende"? Wenn Sie sich die Zeit nehmen, Ihren Code mit konventionellem Einzug neu zu formatieren, werden Sie sehen, warum Ihr Code jetzt nicht das tut, was Sie wollen. –

+0

Danke, dass Sie diesen Jordan bemerkt haben. Das war ein Tippfehler meinerseits. Ich habe es jetzt bearbeitet. Ich tippte die Frage zu schnell und aufgrund der Frustration vergaß ich es erneut zu lesen. Entschuldigung. Meine Frage steht immer noch. –

Antwort

2

Versuchen

break if gets.chomp == "bye" 

Dies ist so, weil Sie Ihre Eingabe so etwas wie bye\n sein würde, so dass Ihr Zustand immer falsch, weil gets auch die Eingabe erfolgt.

+0

Ich erklärte warum. Denn 'tschüss \ n' wird niemals' tschüss' sein – Ursus

+0

Ok Mann, danke. – Ursus

+0

Es hat funktioniert! Danke vielmals. Ich habe nie realisiert, dass es sogar die Eingabe dauert! –

Verwandte Themen