Dies ist ein Versuch, die 3. Ausgabe des Python-Tutorials zu lesen und zu notieren, was Sie gelernt haben.
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
>>> 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
>>> #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 ()
ist nützlich, wenn Sie über eine Reihe von Zahlen iterieren.>>> for i in range(5):
... print(i)
...
0
1
2
3
4
range (10)
erzeugte Wert von 10 ist nur ein Index für jedes Element in einer Folge von Länge 10.
--range ()
kann mit einer anderen Zahl als 0 beginnenrange(5, 10)
→ 5 bis 9
range(0, 10, 3)
→ 0, 3, 6, 9
range(-10, -100, -30)
→ -10, -40, -70
range ()
undlen ()
wie folgt kombinieren.enumerate ()
zu verwenden.>>> 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
range ()
zurückgegebene Objekt verhält sich in vielerlei Hinsicht wie eine Liste, jedoch nicht wie eine Liste.list ()
, die eine Liste aus einem wiederholbaren Text erstellt, ist auch ein Iterator.>>> list(range(5))
[0, 1, 2, 3, 4]
break
Anweisung durchbricht die for
oder while
Schleifeelse
-Klausel hinzugefügtelse
-Klausel wird ausgeführt, wenn die Schleife aufgrund der Erschöpfung der Liste endet oder der bedingte Ausdruck false
wird, und nicht ausgeführt, wenn die Schleife mit der break
-Anweisung endet.>>> 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
continue
überspringt den Rest der Schleife und fährt mit der nächsten Iteration fort>>> 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
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!
...
def
ist der Anfang der Funktionsdefinition, und Sie müssen den Funktionsnamen und die formale Argumentliste in Klammern schreiben.
--Schreiben Sie die Anweisung des Funktionskörpers, der in der nächsten Zeile eingerückt istEine 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
――Die am häufigsten verwendete Form
ask_ok('Do you really want to quit?')
ask_ok('OK to overwrite the file?', 2)
ask_ok('OK to overwrite the file?', 2, 'Come on, only yes or no!')
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]
>>> 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.
>>> 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'
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 !
--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')]
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.
__annotations__
der Funktion gespeichert.>>> 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'
--Indent mit 4 Leerzeichen, keine Tabulatoren
a = f(1, 2) + g(3, 4)
--Iterierbares Objekt, das sich an den Status erinnert (wo es kursiv geschrieben wurde) --Iterator ist eines der iterierbaren Objekte
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 ^) /
Ich bin nicht sicher ... \ (^ o ^) /
Recommended Posts