[Python-Tutorial] Kontrollstruktur-Tool

Einführung

Dies ist ein Versuch, die 3. Ausgabe des Python-Tutorials zu lesen und zu notieren, was Sie gelernt haben.

Python Tutorial 3rd Edition

Und wenn ich mit dem Lesen fertig bin, möchte ich diese Prüfung ablegen Am Ende hat der Test begonnen ...!

** Lass uns anfangen! ** **.

Grundprüfung zur Python 3 Engineer-Zertifizierung

Ich hoffe es geht weiter, ich hoffe es geht weiter

Kontrollstruktur-Tool

if-Anweisung

>>> x = int(input("Bitte geben Sie eine Ganzzahl ein: "))
Bitte geben Sie eine Ganzzahl ein: 42
>>> if x < 0:
...     x = 0
...     print('Negative Zahl ist Null')
... elif x == 0:
...     print('Null')
... elif x == 1:
...     print('Einer')
... else:
...     print('Mehr')
...
Mehr

zur Aussage

>>> #Messen Sie die Länge einer Zeichenfolge:
... words = ['cat', 'window', 'defenestrate']
>>> for w in words:
...     print(w, len(w))
...
cat 3
window 6
defenestrate 12
>>> for w in words[:]: #Durchlaufen Sie die Slice-Kopie der gesamten Liste
...     if len(w) > 6:
...         words.insert(0, w)
...
>>> words
['defenestrate', 'cat', 'window', 'defenestrate']

range () Funktion

>>> for i in range(5):
...     print(i)
...
0
1
2
3
4
range(5, 10)
→ 5 bis 9
range(0, 10, 3)
→ 0, 3, 6, 9
range(-10, -100, -30)
→ -10, -40, -70
>>> a = ['Mary', 'had', 'a', 'little', 'lamb']
>>> for i in range(len(a)):
...     print(i, a[i])
...
0 Mary
1 had
2 a
3 little
4 lamb
>>> list(range(5))
[0, 1, 2, 3, 4]

break and continue-Anweisungen, sonst Klausel in der Schleife

>>> for n in range(2, 10):
...     for x in range(2, n):
...         if n % x == 0:
...             print(n, 'equals', x, '*', n//x)
...             break
...     else:
...         #Wenn Sie den Bruch in der Schleife nicht finden können
...         print(n, 'is a prime number')
...
2 is a prime number
3 is a prime number
4 equals 2 * 2
5 is a prime number
6 equals 2 * 3
7 is a prime number
8 equals 2 * 4
9 equals 3 * 3
>>> for num in range(2, 10):
...     if num % 2 == 0:
...         print("Found an even number", num)
...         continue
...     print("Found a number", num)
Found an even number 2
Found a number 3
Found an even number 4
Found a number 5
Found an even number 6
Found a number 7
Found an even number 8
Found a number 9

pass-Anweisung

Verwenden Sie diese Option, wenn Sie nichts programmgesteuert ausführen müssen

>>> while True:
...     pass #Tastaturunterbrechung mit starkem Gewicht(Ctrl+C)Warten auf
...

Wird oft verwendet, um die kleinste Klasse zu generieren

>>> class MyEmptyClass:
...     pass
...

Eine andere Verwendung der pass -Anweisung besteht darin, sie als Platzhalter in den Hauptteil einer Funktion oder Bedingung einzufügen, wenn Sie neuen Code schreiben, damit Sie über die abstrakte Ebene nachdenken können.

>>> def initlog(*args):
...     pass #Vergessen Sie nicht zu implementieren!
...

Funktionsdefinition

Eine Funktion, die die Fibonacci-Reihe bis zu einer beliebigen Obergrenze schreibt


>>> def fib(n): #Exportieren Sie Fibonacci-Serien bis zu n
...     """Zeigen Sie Fibonacci-Serien bis zu n an"""
...     a, b = 0, 1
...     while a < n:
...     print(a, end=' ')
...     a, b = b, a+b
...     print()
...
>>> #Nennen wir diese Funktion
... fib(2000)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597

Weiter zur Funktionsdefinition

Standardwert des Arguments

――Die am häufigsten verwendete Form

def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):
    while True:
        ok = input(prompt)
        if ok in ('y', 'ye', 'yes'):
            return True
        if ok in ('n', 'no', 'nop', 'nope'):
            return False
        retries = retries - 1
        if retries < 0:
            raise OSError('Nicht kooperativer Benutzer')
        print(complaint)

** Die Standardwertauswertung erfolgt nur einmal. ** **. Dies wirkt sich aus, wenn der Standardwert ein veränderbares Objekt ist, nämlich eine Instanz einer Liste, eines Wörterbuchs und der meisten Klassen.

Die folgende Funktion sammelt beispielsweise die im Aufruf übergebenen Argumente

>>> def f(a, L=[]):
...     L.append(a)
...     return L
...
>>> print(f(1))
[1]
>>> print(f(2))
[1, 2]
>>> print(f(3))
[1, 2, 3]
>>>

Wenn Sie nicht möchten, dass die Standardwerte zwischen Aufrufen geteilt werden, können Sie diese Funktion folgendermaßen schreiben:

>>> def f(a, L=None):
...     if L is None:
...             L = []
...     L.append(a)
...     return L
...
>>> print(f(1))
[1]
>>> print(f(2))
[2]
>>> print(f(3))
[3]

Schlüsselwortargument

>>> def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue'):
...     print("-- This parrot wouldn't", action, end=' ')
...     print("if you put", voltage, "volts through it.")
...     print("-- It's", state, "!")
...

Diese Funktion verwendet ein erforderliches Argument (Spannung), drei optionale Argumente (Status, Aktion, Typ) und kann in einer der folgenden Formen aufgerufen werden:

>>> #Ein Positionsargument
>>> parrot(1000)
-- This parrot wouldn't voom if you put 1000 volts through it.
-- It's a stiff !
>>> #Ein Schlüsselwortargument
>>> parrot(voltage=1000)
-- This parrot wouldn't voom if you put 1000 volts through it.
-- It's a stiff !
>>> #Zwei Schlüsselwortargumente
>>> parrot(voltage=1000000, action='VOOOOOM')
-- This parrot wouldn't VOOOOOM if you put 1000000 volts through it.
-- It's a stiff !
>>> #Drei Schlüsselwortargumente
>>> parrot(action='VOOOOOM', voltage=1000000)
-- This parrot wouldn't VOOOOOM if you put 1000000 volts through it.
-- It's a stiff !
>>> #3 Positionsargumente
>>> parrot('a million', 'bereft of life', 'jump')
-- This parrot wouldn't jump if you put a million volts through it.
-- It's bereft of life !
>>> #1 Positionsargument, 1 Schlüsselwortargument
>>> parrot('a thousand', state='pushing up the daisies')
-- This parrot wouldn't voom if you put a thousand volts through it.
-- It's pushing up the daisies !

Der folgende Aufruf ist jedoch ungültig

>>> #Fehlende erforderliche Argumente
>>> parrot()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: parrot() missing 1 required positional argument: 'voltage'
>>> #Nicht-Keyword-Argument nach Keyword-Argument
>>> parrot(voltage=5.0, 'dead')
  File "<stdin>", line 1
SyntaxError: positional argument follows keyword argument
>>> #Das gleiche Argument zweimal gegeben
>>> parrot(110, voltage=220)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: parrot() got multiple values for argument 'voltage'
>>> #Unbekanntes Schlüsselwortargument
>>> parrot(actor='John Cleese')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: parrot() got an unexpected keyword argument 'actor'

Wenn Sie eine Funktion aufrufen, müssen ** Positionsargumente an erster Stelle stehen und Schlüsselwortargumente nach **

Alle Schlüsselwortargumente müssen mit denen übereinstimmen, die in den formalen Argumenten der Funktionsdefinition geschrieben sind (der Argumentakteur ist in der Papageienfunktion ungültig), aber die Reihenfolge spielt keine Rolle.

Dies gilt auch für nicht optionale Argumente (zB "Papagei (Spannung = 1000)" ist ebenfalls gültig).

Das Argument kann nur einmal einen Wert annehmen. Das Folgende ist ein Beispiel für einen Fehler aufgrund dieser Einschränkung. Ein Typfehler ist aufgetreten, weil das Schlüsselwortargument "a" von function () mehrere Werte hat.

>>> def function(a):
...     pass
...
>>> function(0, a=0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: function() got multiple values for argument 'a'

Wenn das formale Argument in Form eines "**" - Namens endet, erhält dieses Argument ein Wörterbuch. Dieses Wörterbuch enthält alle Schlüsselwortargumente mit Ausnahme der Schlüsselwörter, die den formalen Argumenten entsprechen. Mit anderen Worten, in dieser Form können Schlüsselwörter verwendet werden, die nicht im formalen Argument enthalten sind.

Es kann auch in Kombination mit dem Namensformat * verwendet werden. (Der Name "*" muss vor dem Namen "**" stehen.)

In diesem Format wird ein Taple an die Funktion übergeben, das alle positionsspezifischen Argumente enthält, die nicht im formalen Argument enthalten sind. Daher, wenn Sie die folgende Funktion definieren

>>> def cheeseshop(kind, *arguments, **keywords):
...     print("-- Do you have any", kind, "?")
...     print("-- I'm sorry, we're all out of", kind)
...     for arg in arguments:
...             print(arg)
...     print("-" * 40)
...     keys = sorted(keywords.keys())
...     for kw in keys:
...             print(kw, ":", keywords[kw])
...

Sie können es so nennen und die Ausgabe wird sein:

>>> cheeseshop("Limburger", "It's very runny, sir.", "It's really very, VERY runny, sir.", shopkeeper="Michael Palin", client="John Cleese", sketch="Cheese Shop Sketch")
-- Do you have any Limburger ?
-- I'm sorry, we're all out of Limburger
It's very runny, sir.
It's really very, VERY runny, sir.
----------------------------------------
client : John Cleese
shopkeeper : Michael Palin
sketch : Cheese Shop Sketch

Beachten Sie, dass beim Anzeigen des Inhalts des Wörterbuchs "Schlüsselwörter" zunächst die Ergebnisse der Methode "key ()" sortiert und eine Liste der Schlüsselwortargumente erstellt werden. Ist dies nicht der Fall, ist die Anzeigereihenfolge der Argumente undefiniert.

Liste der optionalen Argumente

>>> def write_multiple_items(file, separator, *args):
...     file.write(separator.join(args))

Argumente mit variabler Länge werden am Ende der formalen Argumentliste platziert. Dies liegt daran, dass alle anderen an die Funktion übergebenen Argumente berücksichtigt werden. Im * args-Format sind alle formalen Argumente danach "Nur-Schlüsselwort" -Argumente. Mit anderen Worten, es kann nur als Schlüsselwortargument verwendet werden, nicht als Positionsargument.

>>> def concat(*args, sep="/"):
...     return sep.join(args)
...
>>> concat("earth", "mars", "venus")
'earth/mars/venus'
>>> concat("earth", "mars", "venus", sep=".")
'earth.mars.venus'

Argumentliste entpacken

Die gegenteilige Situation ist, dass das, was Sie ein Argument sein möchten, bereits eine Liste oder ein Tapple ist und Sie es für eine Funktion entpacken müssen, die ein positioniertes Argument erfordert.

Beispielsweise erwartet die integrierte Funktion range () separate Argumente für Start und Stopp.

Wenn Sie sie nicht einzeln haben, können Sie entpackte Argumente aus einer Liste übergeben oder tappeln, indem Sie die Funktion mit dem Operator * aufrufen.

>>> #Gewöhnlicher Anruf mit individuellen Argumenten
>>> list(range(3, 6))
[3, 4, 5]
>>> args = [3, 6]
>>> #Aufruf mit entpackten Argumenten aus der Liste
>>> list(range(*args))
[3, 4, 5]

Ebenso können Sie den Operator ** verwenden, um ein Wörterbuch als Schlüsselwortargument zu übergeben.

>>> def parrot(voltage, state='a stiff', action='voom'):
...     print("-- This parrot wouldn't", action, end=' ')
...     print("if you put", voltage, "volts through it.", end=' ')
...     print("E's", state, "!")
...
>>> d = {"voltage": "four million", "state": "bleedin' demised", "action": "VOOM"}
>>> parrot(**d)
-- This parrot wouldn't VOOM if you put four million volts through it. E's bleedin' demised !

Lambda-Ausdruck

--Verwenden Sie das Schlüsselwort lambda, um eine kleine anonyme Funktion zu multiplizieren --lambda a, b: a + b ist eine Funktion, die die Summe zweier Argumente zurückgibt

>>> def make_incrementor(n):
...     return lambda x: x + n
...
>>> f = make_incrementor(42)
>>> f(0)
42
>>> f(1)
43

Das Obige ist ein Beispiel für die Rückgabe einer Funktion unter Verwendung eines Lambda-Ausdrucks. Eine andere Verwendung ist die Übergabe einer kleinen Funktion als Argument

>>> pairs = [(1, 'one'), (2, 'tow'), (3, 'three'), (4, 'four')]
>>> pairs.sort(key=lambda pair: pair[1])
>>> pairs
[(4, 'four'), (1, 'one'), (3, 'three'), (2, 'tow')]

Dokumentzeichenfolge (docstring)

Das Folgende ist ein Beispiel für eine mehrzeilige "Dokumentzeichenfolge" (beachten Sie den Teil, der von "doc" aufgerufen wird).

>>> def my_function():
...     """Do nothing, but document it.
...
...     No, really, it doesn't do anything.
...     """
...     pass
...
>>> print(my_function.__doc__)
Do nothing, but document it.

        No, really, it doesn't do anything.

Funktionsanmerkung (Funktionsanmerkung)

>>> def f(ham: str, eggs: str = 'eggs') -> str:
...     print("Annotations:", f.__annotations__)
...     print("Arguments:", ham, eggs)
...     return ham + ' and ' + eggs
...
>>> f('spam')
Annotations: {'ham': <class 'str'>, 'eggs': <class 'str'>, 'return': <class 'str'>}
Arguments: spam eggs
'spam and eggs'

Codierungsstil (nur die Hauptpunkte aus PEP8)

--Indent mit 4 Leerzeichen, keine Tabulatoren

der Begriff

Reihenfolge

Wiederholbar

Iterator

--Iterierbares Objekt, das sich an den Status erinnert (wo es kursiv geschrieben wurde) --Iterator ist eines der iterierbaren Objekte

Platzhalter

Auspacken

Wenn die rechte Seite ein Tapple ist, können Sie den Inhalt erweitern, indem Sie mehrere Variablen auf der linken Seite platzieren. Dies nennt man Sequenzentpacken, aber ich verstehe die Verwendung und Bedeutung des Wortes "entpacken" nicht ganz ... \ (^ o ^) /

Gleiche Anzahl von Etagen

Ich bin nicht sicher ... \ (^ o ^) /

Referenzinformationen

Recommended Posts

[Python-Tutorial] Kontrollstruktur-Tool
[Python-Tutorial] Datenstruktur
Python-Tutorial
Python Django Tutorial (5)
Python Django Tutorial (2)
Zusammenfassung des Python-Tutorials
Python Django Tutorial (8)
Python Django Tutorial (6)
Installieren Sie Python Control
Python interne Struktur
Python Django Tutorial (7)
Python Django Tutorial (1)
Python Django Tutorial Tutorial
Python Django Tutorial (3)
Python Django Tutorial (4)
[Docker] Tutorial (Python + PHP)
Zusammenfassung des Python Django-Tutorials
C sprachähnliche Struktur in Python
Python-Steuerungssyntax (Denkmal)
Python OpenCV Tutorial Memo
Cloud Run Tutorial (Python)
First Fabric (Python-Bereitstellungstool)
Datenstruktur Python Push Pop
[Python] Persönliches Tutorial zum Entscheidungsbaum
Instrumentensteuerung mit Python [pyvisa]
[ev3dev × Python] Einzelmotorsteuerung
Tutorial zum AI Edge-Wettbewerb (Implementierungswettbewerb) [10: HW mit Python steuern ..., aber ...]
Woche 4: Kontrollstruktur / Bewertungsfunktion
Python Django Tutorial Cheet Sheet
Python-Steuerungssyntax, Funktionen (Python-Lernnotiz ②)
Gehirnwellenanalyse mit Python: Python MNE-Tutorial
Zusammenfassung der Versionsverwaltung der virtuellen Umgebung Python
[ev3dev × Python] Steuerung mehrerer Motoren
Dreidimensionale Skelettstrukturanalyse mit Python
Studie aus Python Hour2: Steueranweisung
Persönliche Zusammenfassung des Python Package Management Tools
Erstelltes AtCoder-Testtool für Python
[Python] Memo zum Erstellen von Scraping-Tools
[ev3dev × Python] Anzeige, Sprache, LED-Steuerung
Bilderbuch-Datenstrukturalgorithmus Python
Versuchen Sie die Frequenzsteuerungssimulation mit Python
[Python Tutorial] Eine einfache Einführung in Python
Tipps (Kontrollstruktur), die Sie beim Programmieren von Wettbewerben mit Python2 kennen sollten