[Hikari-Python] Kapitel 05-10 Steuerungssyntax (Unterbrechung und Fortsetzung der iterativen Verarbeitung)

[Python] Kapitel 05-10 Unterbrechen Sie die iterative Verarbeitung und setzen Sie sie fort

Bis jetzt habe ich iterative Verarbeitung mit for- und while-Anweisungen geschrieben. Tatsächlich können Sie diesen Prozess in der Mitte zwangsweise unterbrechen oder den Prozess abhängig von den Bedingungen fortsetzen. Zu diesem Zweck gibt es ** Unterbrechungsverarbeitung ** und ** Weiterverarbeitung **.

Lassen Sie uns auf diese Prozesse eingehen. Lassen Sie uns einen Blick auf die Verbesserung des Programms in [Kapitel 05-09] werfen (https://qiita.com/ko0821/items/73a23cc8568f9bc80cdb). Schauen wir uns zunächst noch einmal das Programm in Kapitel 05-09 an. Überprüfen Sie das Problem erneut. "Wir werden ein Programm erstellen, um die ** Gesamtpunkte ** und ** Durchschnittspunkte ** der Testergebnisse der Schüler in der Klasse zu berechnen. Die Anzahl der Schüler in der Klasse ändert sich jedoch von Klasse zu Klasse, sodass wir nicht wissen, wie viele. Geben Sie die Punkte der Reihe nach ein. Wenn ein negativer Wert eingegeben wird, erstellen Sie ein Programm zur Berechnung der Gesamtpunkte und Durchschnittspunkte bis zu diesem Punkt. Die Punkte sind 100 von 100 Punkten. "

i = 1  #Ich bin die Anzahl der Personen in der Klasse
total = 0 #Addieren Sie die Gesamtpunkte der Klasse zur Gesamtsumme
score = 0 #Schülerwertung

while score >= 0:
    total += score
    score = int(input(f'{i}Bitte geben Sie die Punktzahl der Person ein (die Punktzahl beträgt 100 von 100 Punkten). Die Eingabe eines negativen Wertes beendet den Vorgang):'))
    i += 1

i -= 1 #Da es noch eine Person gibt, werden wir es um eine Person reduzieren
print(f'Gesamtpunktzahl:{total}')
print(f'Durchschnittliche Punktzahl:{total/i}')


05-09-01.py Ausführungsergebnis

[Ausführungsergebnis] </ font> Bitte geben Sie die Punktzahl der ersten Person ein (die Punktzahl beträgt 100 von 100 Punkten. Die Verarbeitung endet, wenn Sie einen negativen Wert eingeben): 90 Bitte geben Sie die Punktzahl der zweiten Person ein (die Punktzahl beträgt 100 von 100 Punkten. Der Vorgang endet, wenn Sie einen negativen Wert eingeben): 75 Bitte geben Sie die Punktzahl der dritten Person ein (die Punktzahl beträgt 100 von 100 Punkten. Der Vorgang endet, wenn Sie einen negativen Wert eingeben): 83 Bitte geben Sie die Punktzahl der 4. Person ein (die Punktzahl beträgt 100 von 100 Punkten. Der Vorgang endet, wenn Sie einen negativen Wert eingeben): -1 Gesamtpunktzahl: 248 Durchschnittliche Punktzahl: 62,0

break-Anweisung

Wenn wir uns das obige Programm früher ansehen, gibt es am Ende ** "i- = 1 # Da es noch eine Person gibt, werden wir es um eine Person reduzieren" **. Für einige Leute bin ich neugierig, diesen zu subtrahieren. (Dies kann die Lesbarkeit des Programms beeinträchtigen.) Ich würde gerne einen Weg finden, um diesen Prozess zu eliminieren.

Im obigen Programm wird nun basierend auf der Bedingung der ** while-Anweisung festgelegt, ob der Score-Eingabevorgang fortgesetzt oder beendet werden soll. ** ** ** Sie können dies auch in der Anweisung ** while ** tun. Wenn der Eingabewert eine negative Zahl ist, können Sie die Anweisung while while ** zwangsweise beenden. Verwenden Sie in diesem Fall ** break **.

Schauen wir uns das folgende Programm an. Erstellen Sie eine Datei mit dem Dateinamen samp05-10-01.py </ font> in chap05 </ font> und verwenden Sie den folgenden Code Bitte schreibe.

samp05-10-01.py


i = 1  #Ich bin die Anzahl der Personen in der Klasse
total = 0 #Addieren Sie die Gesamtpunkte der Klasse zur Gesamtsumme
score = 0 #Schülerwertung

#Da die while-Bedingung True ist, handelt es sich um eine Endlosschleife
while True:
    total += score
    score = int(input(f'{i}Bitte geben Sie die Punktzahl der Person ein (die Punktzahl beträgt 100 von 100 Punkten). Die Eingabe eines negativen Wertes beendet den Vorgang):'))

    #Wenn der Eingabewert eine negative Zahl ist, beendet break die while-Anweisung.
    if score < 0:
        print(f'{score}Wird eingegeben, wird die while-Anweisung zwangsweise beendet.')
        break

    i += 1

#i -= 1 #← Die Verarbeitung hier kann entfallen
print(f'Gesamtpunktzahl:{total}')
print(f'Durchschnittliche Punktzahl:{total/i}')


samp05-10-01.py Ausführungsergebnis

[Ausführungsergebnis] </ font> Bitte geben Sie die Punktzahl der ersten Person ein (die Punktzahl beträgt 100 von 100 Punkten. Die Verarbeitung endet, wenn Sie einen negativen Wert eingeben): 90 Bitte geben Sie die Punktzahl der zweiten Person ein (die Punktzahl beträgt 100 von 100 Punkten. Der Vorgang endet, wenn Sie einen negativen Wert eingeben): 75 Bitte geben Sie die Punktzahl der dritten Person ein (die Punktzahl beträgt 100 von 100 Punkten. Der Vorgang endet, wenn Sie einen negativen Wert eingeben): 83 Bitte geben Sie die Punktzahl der 4. Person ein (die Punktzahl beträgt 100 von 100 Punkten. Der Vorgang endet, wenn Sie einen negativen Wert eingeben): -1 Da -1 eingegeben wurde, wird es zwangsweise aus der while-Anweisung beendet. Gesamtpunktzahl: 248 Durchschnittliche Punktzahl: 62,0

Erstens gibt es zwei Unterscheidungsmerkmale. Der erste ist der Abschnitt ** while True: **. Ursprünglich wurden Vergleichsoperatoren wie ** == ** und ** <= ** für diese Bedingung verwendet, aber das Schreiben von ** True ** hat das Ergebnis des Vergleichsoperators bereits geschrieben. Ich werde. Daher ist es so wie es ist immer ** wahr **, was bedeutet, dass es eine Endlosschleife sein wird. Ich muss irgendwie raus. Diese Methode ist das zweite unten beschriebene Merkmal.

Die zweite ist ** break ** innerhalb der ** while-Anweisung ** und dann innerhalb der ** if-Anweisung **. Da die Bedingung der if-Anweisung ** score <0 ** ist, wird hier die Bedingung "wenn eine negative Zahl eingegeben wird" verwendet, um ** break ** zu übergeben. Diese ** Pause ** ermöglicht es Ihnen, gewaltsam aus der ** while-Anweisung ** auszubrechen.

Dann werden der Gesamtwert und der Durchschnittswert der zuletzt eingegebenen Punkte berechnet. Und Sie können den Prozess von ** "i- = 1" ** eliminieren, den Sie ganz am Anfang geschrieben haben.

Aussage fortsetzen

Das Programm, das ich zuvor geschrieben habe, hat einen weiteren Nachteil. Achten wir auf den Teil ** "Die Punktzahl beträgt 100 von 100 Punkten." ** in der obigen Problemstellung. Bei der Eingabe habe ich jetzt eingegeben, um 100 Punkte nicht zu überschreiten. Da diese Punktzahl jedoch von Menschen eingegeben wird, ist es möglich, ** 900 ** einzugeben, indem versehentlich eine Menge von 0 eingegeben wird, anstatt ** 90 ** in die Punktzahl einzugeben.

Wenn es sich bei diesem Programm um ein Scoring-Programm handelt, ist es immer noch in Ordnung, aber was ist, wenn es sich um ein Geldhandhabungssystem handelt? Es wird ein schwerwiegender Vorfall sein (*) </ font>.

(*) </ font> ** Vorfall ** bedeutet eine unerwartete Systemunterbrechung ** oder Qualitätsminderung **. Es hat eine ähnliche Bedeutung wie Ärger. Dieser Begriff wird häufig im Bereich des IT-Service-Managements verwendet.

Es gibt eine ** continue-Anweisung , um dies zu verhindern. Ich möchte das vorherige Programm weiter verbessern, werde es aber separat erstellen. Erstellen Sie eine Datei mit dem Dateinamen samp05-10-02.py </ font> in chap05 </ font> und verwenden Sie den folgenden Code Bitte schreibe. Zusätzlich wird die Addition der eingegebenen Punkte ( gesamt + = Punktzahl **) neu geschrieben, so dass sie nach zwei Urteilen durchgeführt wird.

samp05-10-02.py


i = 1  #Ich bin die Anzahl der Personen in der Klasse
total = 0 #Addieren Sie die Gesamtpunkte der Klasse zur Gesamtsumme
score = 0 #Schülerwertung

#Da die while-Bedingung True ist, handelt es sich um eine Endlosschleife
while True:
    score = int(input(f'{i}Bitte geben Sie die Punktzahl der Person ein (die Punktzahl beträgt 100 von 100 Punkten). Die Eingabe eines negativen Wertes beendet den Vorgang):'))

    #Wenn der Eingabewert eine negative Zahl ist, beendet break die while-Anweisung.
    if score < 0:
        print(f'{score}Wird eingegeben, wird die while-Anweisung zwangsweise beendet.')
        break

    #Wenn der Eingabewert größer als 100 ist, beginnt der Prozess am Anfang der while-Anweisung, ohne die Anzahl der Personen i zu zählen.
    if score > 100:
        print('Für die Punktzahl wurde ein Wert größer als 100 eingegeben. Geben Sie ihn daher erneut ein.')
        continue

    total += score  #Diesmal wird die Verarbeitung der Punkte nach den beiden oben genannten Urteilen verarbeitet
    i += 1

#i -= 1 #← Die Verarbeitung hier kann entfallen
print(f'Gesamtpunktzahl:{total}')
print(f'Durchschnittliche Punktzahl:{total/i}')


samp05-10-02.py Ausführungsergebnis

[Ausführungsergebnis] </ font> Bitte geben Sie die Punktzahl der ersten Person ein (die Punktzahl beträgt 100 von 100 Punkten. Die Verarbeitung endet, wenn Sie einen negativen Wert eingeben): 90 Bitte geben Sie die Punktzahl der zweiten Person ein (die Punktzahl beträgt 100 von 100 Punkten. Der Vorgang endet, wenn Sie einen negativen Wert eingeben): 75 Bitte geben Sie die Punktzahl der dritten Person ein (die Punktzahl beträgt 100 von 100 Punkten. Der Vorgang endet, wenn Sie einen negativen Wert eingeben): 833 Für die Punktzahl wurde ein Wert größer als 100 eingegeben. Geben Sie ihn daher erneut ein. Bitte geben Sie die Punktzahl der dritten Person ein (die Punktzahl beträgt 100 von 100 Punkten. Der Vorgang endet, wenn Sie einen negativen Wert eingeben): 83 Bitte geben Sie die Punktzahl der 4. Person ein (die Punktzahl beträgt 100 von 100 Punkten. Der Vorgang endet, wenn Sie einen negativen Wert eingeben): -1 Da -1 eingegeben wurde, wird es zwangsweise aus der while-Anweisung beendet. Gesamtpunktzahl: 248 Durchschnittliche Punktzahl: 62,0

In der ** if-Anweisung ** in der while-Anweisung wird beurteilt, ob an der Stelle von ** score> 100 ** ein Wert größer als 100 Punkte eingegeben wird oder nicht. Wenn ein Wert größer als 100 eingegeben wird, beginnt die ** continue-Anweisung ** am Anfang der while-Anweisung von vorne.

Schließlich

Diesmal habe ich ** break Anweisung ** und ** continue Anweisung ** angesprochen. Einige Programmierer finden es schwierig, diese beiden zu pflegen, weil einige Leute sagen, dass sie weniger mobil sind. Wenn Sie es am eigentlichen Entwicklungsstandort verwenden, müssen Sie mit der Entwicklung fortfahren und es in Besprechungen besprechen.

Wie ich bereits erwähnt habe, kann es vorkommen, dass Sie bei der Eingabe eines Programms einen Fehler machen. Tatsächlich muss in der vorherigen Eingabe noch etwas behoben werden. Wenn Sie nicht nur den Zahlenbereich, sondern auch eine Zeichenfolge eingeben, tritt ein Fehler auf. Wir müssen auch überlegen, was zu tun ist, wenn ein solcher Fehler auftritt. Es ist gut daran zu denken, dass das Erstellen eines Mechanismus, der solche Fehler nicht macht, als ** narrensicher ** bezeichnet wird. (Wird oft in der Prüfung zum Informationsverarbeitungsingenieur gefragt)

Zurück zum [Inhaltsverzeichnis Link]

Recommended Posts