2017-06-28 2 views
0

Da ich ein Programmierneuling bin, brauche ich deinen Rat bezüglich der Kodierungsübung, die ich für den Online-Kurs erfüllen muss. HierPython while loop (Kodierungsübung, drei Variablen)

ist die Anweisung:

mystery_int_1 = 3

mystery_int_2 = 4

mystery_int_3 = 5
(diese wird geändert, nachdem ich den Code einreichen, es ist also nur ein Beispiel)

Oben sind drei Werte. Führen Sie eine while-Schleife aus, bis alle drei Werte kleiner oder gleich 0 sind. Jedes Mal, wenn Sie den Wert der drei Variablen ändern, drucken Sie ihre neuen Werte alle in derselben Zeile, getrennt durch einzelne Leerzeichen. Zum Beispiel, wenn ihre Werte 3 waren, 4 und 5 bzw. würden Sie den Code drucken:

-1 0 1

-2 -1 0

ich habe versucht, es auf diese Weise zu schreiben:

while not mystery_int_1 <= 0 and not mystery_int_2 <= 0 and not mystery_int_3 <= 0: 
    mystery_int_1 -= 1 
    mystery_int_2 -= 1 
    mystery_int_3 -= 1 
    print(mystery_int_1, mystery_int_2, mystery_int_3) 

Nachdem ich den Code ausgeführt habe, merkte ich, dass etwas nicht in Ordnung ist, aber ich kann nicht herausfinden, wie ich ihn modifizieren soll. Versuchte viele Optionen, und keiner von ihnen arbeitete so, wie es sollte ...

Vielen Dank im Voraus!

+0

Post vollständigen Code mit Ausgang und erwartete Ausgabe – Ravi

Antwort

3

Ihre Schleife läuft im Moment bis beliebig der Zahlen ist kleiner oder gleich Null. Sagte laut ist Ihre Schleife „während mystery_int_1 nicht kleiner als oder gleich Null und mystery_int_2 ist nicht kleiner oder gleich Null und ...“, also wenn jeder von ihnen ist kleiner oder gleich null, stoppt die Schleife.

Sie wollen dies:

while not (mystery_int_1 <= 0 and mystery_int_2 <= 0 and mystery_int_3 <= 0): 

Oder diese:

while mystery_int_1 > 0 or mystery_int_2 > 0 or mystery_int_3 > 0: 

Oder vielleicht dies, obwohl ich diese Version der verwirrendsten finden. (Das heißt, es ist am nächsten, was Sie bereits haben.)

while not mystery_int_1 <= 0 or not mystery_int_2 <= 0 or not mystery_int_3 <= 0: 
0

versuchen, diese -

while not mystery_int_1 <= 0 or not mystery_int_2 <= 0 or not mystery_int_3 <= 0: 
    mystery_int_1 -= 1 
    mystery_int_2 -= 1 
    mystery_int_3 -= 1 
    print("{} {} {}".format(mystery_int_1, mystery_int_2, mystery_int_3)) 

Read python and AND `or

0

Ihr Zustand while not mystery_int_1 <= 0 and not mystery_int_2 <= 0 and not mystery_int_3 <= 0 sagt Schleife während alle diese Bedingungen erfüllt sind (weil von und verwendet.):

  • mystery_int_1> 0
  • mystery_int_2> 0
  • mystery_int_3> 0

Wenn eine der Zahl unter 0 geht, eine Bedingung falsch wird aber die Bedingung für die Schleife benötigt all das ist wahr und hört auf, es auszuführen. Möglicherweise möchten Sie and durch or ersetzen. So, dass die Schleife wird fortgesetzt, bis eine der Variablen noch größer als 0

0

Ihren Python-Interpreter öffnen und die folgende versuchen,

Nehmen wir an, ich eine Nummer haben, die Wert hat 2

>>> number = 2 
>>> number-=1 #2-1=1 
>>> number 
1 

Jetzt überprüfen wir ob Nummer> = 0

>>> number>=0 
True 

Ja! Es ist wahr. Weil die Zahl größer als 0 ist. Das sollten Sie tun. Überprüfen ob Nummer> = 0. Aber Stattdessen Sie tun,

>>> not number<=0 
False 

Bedeutung Sie das genaue Gegenteil von dem tun, was sollten Sie

>>> number-=2 
>>> number 
-1 #now number has become -1 

>>> number>=0 
False 
>>> not number<=0 
True 

Hierdurch werden fügte hinzu, dass zusätzliche not Sie tun nur das genaue Gegenteil von was du willst. Also in Ihrem Fall nur das ist genug:

while mystery_int_1 > 0 or mystery_int_2 > 0 or mystery_int_3 > 0: 

Werfen Sie einen Blick auf diese:

value=1 
value1=2 
value2 =3 
while value or value2 or value1: 
    print("looop") 

Drucke Infinte mal looop.

value=0 
value1=2 
value2 =3 
while value and value2 and value1: 
    print("looop") 

Dies gilt jedoch nicht ausgeführt werden, da ein Wert 0 ist. In Python müssen Sie nicht überprüfen, ob value>=0. In dem Moment, in dem ein Wert 0 enthält, wird das als falsch betrachtet. So können Sie genau dies tun:

while mystery_int_1 or mystery_int_2 or mystery_int_3: 

Hier auch wenn ein Wert not 0 d.h >=0 Schleife ausgeführt werden soll. Es wird nur beendet, wenn einer der Werte 0 ist. Hier

ist der vollständige Code:

mystery_int_1 = 3 
mystery_int_2 = 4 
mystery_int_3 = 5 
while mystery_int_1 or mystery_int_2 or mystery_int_3: 
    mystery_int_1 -= 1 
    mystery_int_2 -= 1 
    mystery_int_3 -= 1 
    print(mystery_int_1, mystery_int_2, mystery_int_3) 

Ausgang:

2 3 4 
1 2 3 
0 1 2 
-1 0 1 
-2 -1 0 
+0

Dies ist vor allem richtig, aber dein endgültiger Code verwendet 'und' anstelle von 'oder'. – smarx

+0

Ich bevorzuge auch generell 'wenn foo> 0' zu 'if foo'. Es ist schwieriger, Fehler zu machen, wie versehentlich eine Zeichenfolge in dieser Variablen zu haben. "Explizit ist besser als implizit!" – smarx

+0

yeah ... 'bis alle Werte 0 sind, habe ich das verpasst, danke Mann..ich werde updaten. Ihre ist eine großartige Lösung BTW +1 – void

0

Sie diesen Code versuchen:

while not (mystery_int_1<=0 and mystery_int_2 <=0 and mystery_int_3<=0): 

    mystery_int_1 -= 1 
    mystery_int_2 -= 1 
    mystery_int_3 -= 1 

    print(mystery_int_1, mystery_int_2, mystery_int_3)