[Qualifikation] Ich habe versucht, Python von Grund auf zu lernen, um die Grundprüfung für die Python3-Ingenieurzertifizierung (Studienausgabe) abzulegen.

Was ich hier gemacht habe

Konzentration auf "Python Tutorial 3rd Edition", [Python Tutorial] im Web (https://docs.python.org/ja/3.5) Ich habe mir auch /tutorial/index.html angesehen und es tatsächlich ausgeführt. Ich habe lange gebraucht, um diese Notiz zu machen. Die Ausführungsumgebung besteht hauptsächlich aus Befehlen in CentOS7. Schließlich habe ich es mit Jupyer Notebook versucht, aber es war für mich persönlich einfacher.

Kapitel 1 Appellieren wir an den Appetit (1 Frage, 2,50%)

Python ist eine Interpretersprache

Kapitel 2 Verwendung des Python-Interpreters (1 Frage, 2,50%)

2.1. Starten des Dolmetschers

(In der Shell) Starten Sie den Python3.5-Interpreter * 3,5 Punkte variieren je nach Umgebung \ >>> quit () Beendet den Interpreter

python -c Befehl [Argument] ...

Argumente übergeben

Zugriff durch Ausführen von "import sys" sys.argv

Interaktiver Modus

Primäre Eingabeaufforderung (>>>) Sekundäre Eingabeaufforderung (...)

2.2 Dolmetscher und seine Umgebung

Standardmäßig wird Python-Quellcode als UTF-8-codiert behandelt.

Kapitel 3 Einfache Einführung (6 Fragen, 15,00%)

Eingebauter Datentyp (Standardtyp) (nicht beschrieben: nach dem Lesen aller erneut bestätigt)

Kann nicht geändert werden Kann gewechselt werden Wiederholbar Reihenfolge Kartierung Daten
bool True,False
int ganze Zahl
float Gleitkommazahl
complex Komplexe Zahl
str String
list
tuple
range
dict
set
bytes binär
bytearray
file object

Numerischer Wert

Der Operator + - * /% () ist das Bild anderer Sprachen

Operator.


>>> 17 / 3;      #Teilung(In Python2"//"Gleiches Ergebnis wie
>>> 17 // 3;   # ***Division abrunden***
>>> 5 *** 2;       #5 im Quadrat
>>> 0%3            #0/Rest von 3 → 0
3*3.72/1.5

Im interaktiven Modus lautet der zuletzt angezeigte Ausdruck "_」(unterstreichen)Ist zugeordnet.


>>> price = 100.5
>>> tax = 10.5
>>> price * tax
>>> price + _      #Im interaktiven Modus ist der zuletzt angezeigte Ausdruck die Variable "_Ersatz in
>>> _ = 10000      #Eine Substitution ist möglich, sollte jedoch als schreibgeschützt behandelt werden

Fehler bei Verwendung ohne Zuordnung zur Variablen

String

>>> 'doesn\'t'     #Flucht
>>> "doesn't"      #In doppelte Anführungszeichen setzen
>>> s = 'First\nSecond'
>>> print(s)
>>> print(r'C:\some\name')   #rohe Schnur

Andere(Nicht aufgeführt).


>>> a = 'Py' 
>>> b = 'thon'
>>> c = 'Jython'
>>> a = b = c  #Mehrfachzuweisung
>>> a              #Die letzte Variable gilt für alles
'Jython'
>>> b
'Jython'
>>> c
'Jython'

Dreifache Anführungszeichen (doppelte Anführungszeichen oder einfache Anführungszeichen) können Zeilenumbrüche unverändert behandeln.


>>> '''aaa                    #Beispiel
... bbb
... ccc
... '''
'aaa\nbbb\nccc\n'

>>> print("""\          #Mehrere Zeilen 1
... Usage: ls
... -r
... -h
... """)
>>> print('''\          #Mehrere Zeilen 2
... Usage: ls
... -r
... -h
... ''')

Die Zeichenkettenkombination verwendet grundsätzlich +. (Leerzeichen sind möglich, aber andere Fehler als Variablen und Zeichenfolgen)

String-Verkettung.


>>> word = 'python'
>>> word2 = 'ium'
>>> 3 * 'un' + 'ium'           #Wiederholung
'unununium'
>>> 'Py' + 'thon'        #Der Charakter ist +,Jeder Raum kann kombiniert werden
'Python'
>>> 'Py' 'thon'
'Python'
>>> word 'ium'          #Variablen und Zeichen können nicht mit Leerzeichen kombiniert werden
  File "<stdin>", line 1
    word 'ium'
             ^
SyntaxError: invalid syntax
>>> word word2           #In Leerzeichen können Variablen nicht kombiniert werden
  File "<stdin>", line 1
    word word2
             ^
SyntaxError: invalid syntax
>>> word + word2         #Verwenden Sie +, um Variablen und Variablen und Zeichen zu kombinieren
'pythonium'

Manipulation variabler Zeichenfolgen(Indexspezifikation).


>>> word = 'python'
>>> word[2]           #***0 ist das erste Zeichen***
't'
>>> word[-2]     #***-1 ist das letzte Zeichen***
'o'

Schneiden Schneiden > String [Startindex: Endindex: Anzahl der Schritte]

Index ist zwischen Buchstaben(between)Das linke Ende des ersten Zeichens ist 0.


 +---+---+---+---+---+---+
 | P | y | t | h | o | n |
 +---+---+---+---+---+---+
 0   1   2   3   4   5   6
-6  -5  -4  -3  -2  -1

Manipulation variabler Zeichenfolgen(Schneiden(Ausgeschnitten)Bezeichnung).


>>> word = 'python'
>>> word[0:2]   #Beinhaltet das erste Zeichen, aber nicht das letzte Zeichen
'py'
>>> word[2:5]   #Beinhaltet das erste Zeichen, aber nicht das letzte Zeichen
'tho'
>>> word[:2]       #Start:0 wenn weggelassen
'py'
>>> word[-2:]            #Ende:Wenn nicht angegeben, die Größe der Zeichenfolge(Bis zum letzten Zeichen)
'on'
>>> word[:-2]            #Start:0 wenn weggelassen
'pyth'
>>> word[0:10:2]        #Geben Sie die Anzahl der Schritte an. * Obwohl im Buch nicht erwähnt, werden Fragen in der Scheinprüfung gestellt
'pto'
>>> word[:2] + word[2:]  #Entspricht einer Zeichenfolge
'python'

Manipulation variabler Zeichenfolgen(Bezeichnung außerhalb des Bereichs).


>>> word[42]   #Die Indexspezifikation lautet NG
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range
>>> word[4:42]   #Die Schnittspezifikation ist in Ordnung
'on'

Manipulation variabler Zeichenfolgen(String ändern).


>>> word[0] = 'J'   #Python-Zeichenfolge kann nicht geändert werden = unveränderlicher Körper(immutable)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
>>> 'J' + word[1:]  #Müssen einen neuen String generieren
'Jython'

Manipulation variabler Zeichenfolgen(String-Länge).


>>> word = 'dive\ninto\ncode\t'
>>> print(len(word))
15                                  #Steuerzeichen werden als ein Zeichen gezählt
>>> d = 'xxxxDIVExxxxDIVExxxxDIVE'
>>> print(d.replace('DIVE', 'CODE', 1))
xxxxCODExxxxDIVExxxxDIVE           #Ersetzen Sie nur den ersten Wert
>>> d
'xxxxDIVExxxxDIVExxxxDIVE'     #Keine Änderung an der ursprünglichen Zeichenfolge

aufführen.


>>> squares = [1,4,9,16,25]
>>> squares
[1, 4, 9, 16, 25]
>>> squares[0]
1
>>> squares[2]
9
>>> squares[-1]
25
>>> squares[-3:]
[9, 16, 25]
>>> squares[:]
[1, 4, 9, 16, 25]
>>> squares[::]
[1, 4, 9, 16, 25]
>>> squares[:::]
  File "<stdin>", line 1
    squares[:::]
              ^
SyntaxError: invalid syntax

Listenverkettung.


>>> squares + [ 100, 1001 ]
[1, 4, 9, 16, 25, 100, 1001]
>>> squares2 = [ 8001, 8002 ]
>>> squares + squares2
[1, 4, 9, 16, 25, 8001, 8002]  #Listenwerte ändern sich nicht

Liste kann geändert werden(mutable).


>>> squares[1] = 40000
>>> squares
[1, 40000, 9, 16, 25]
>>> squares.append(216)           # append()Methode
>>> squares.append(7**3)
>>> squares
[1, 40000, 9, 16, 25, 216, 343]   #Am Ende der Liste hinzufügen

>>> letters = ['a','b','c','d','e','f','g']  #Ein Ersatz für das Schneiden ist ebenfalls möglich
>>> letters
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> letters[2:5] = ['C','D','E']
>>> letters
['a', 'b', 'C', 'D', 'E', 'f', 'g']
>>> letters[2:5] = []
>>> letters
['a', 'b', 'f', 'g']
>>> letters[:] = []
>>> letters
[]

Kapitel 4 Kontrollstruktur-Tool (9 Fragen, 22,50%)

4.1 if-Anweisung

4.2 zur Aussage

4.3 range () Funktion

for i in range(s): print(i)

Die Argumente für Bereich (10) Nr. 1 und 3 können weggelassen werden, wenn Schritt für Schritt von 0 range (5, 10) # 3. Argument kann Schritt für Schritt weggelassen werden Bereich (0, 10, 3) # 0 bis 10 in 3 Schritten

>>> print(range(10))  # (Hinweis)Die Seriennummer des Wertes wird nicht angezeigt
range(0, 10)

4.4. Break and continue-Anweisungen, sonst Klausel in der Schleife

4.5. Pass-Anweisung

·nichts tun. Es wird verwendet, wenn ein syntaktischer Fehler auftritt.

Bei der kleinsten Klasse.


>>> class MyEmptyClass:
...     pass

Wenn Sie beim Schreiben von neuem Code keinen bestimmten Code in die Funktion oder die bedingte Anweisung schreiben.


>>> def initlog(*args):
...     pass

4.6 Funktionsdefinition ★★

4.7 Weiter zur Funktionsdefinition ★★

4.7.1 Standardargumentwert Das bequemste Format ist die Angabe eines Standardwerts für ein oder mehrere Argumente.

def ask_default (a, b, c = 100): # 100 wird auf c gesetzt, wenn das 3. Argument weggelassen wird

Sammeln Sie die an die Funktion übergebenen Argumente in nachfolgenden Funktionsaufrufen.


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

4.7.2. Schlüsselwortargumente Die Funktion kann auch in Form von "Schlüsselwort = Wert" vorliegen. Beim Aufrufen einer Funktion muss das Positionsargument an erster Stelle und das Schlüsselwortargument an erster Stelle stehen.

>>> def fugafuga(title,content = 'default_content', number = 4):
...     print(title, end=' ')
...     print(content, end=' ')
...     print(number)
...
...
>>> fugafuga(title = 'title_default', content = 'None', number = 5)
title_default None 5
>>> fugafuga(title = 'title_default', number = 5)  #Schlüsselwortargumente können weggelassen werden (Argumente in der Mitte können weggelassen werden)
title_default default_content 5
>>> fugafuga(1000)                               #Positionsargumente sind ebenfalls möglich (Argumente in der Mitte können nicht weggelassen werden)
1000 default_content 4

4.7.3 Optionale Argumentliste Die am wenigsten verwendete Option besteht darin, anzugeben, dass die Funktion mit einer beliebigen Anzahl von Argumenten aufgerufen werden kann.

>>> def write_multiple_items(file, separator, *args):
...     file.write(separator.join(args))
>>> concat("earth", "mars", "venus")
'earth/mars/venus'
>>> concat("earth", "mars", "venus", sep=".")
'earth.mars.venus'
>>> def dive_into_code(teacher, *mentor):
...     print(teacher)
...     print(mentor)
...
>>> dive_into_code('Noro', 'Nakao', 'Miyaoka')
Noro                      #1. Argument Ort
('Nakao', 'Miyaoka')      #Nach dem zweiten Argument

4.7.4. Auspacken der Argumentliste

4.7.5 Lambda-Typ

4.7.6. Auspacken der Argumentliste Dokumentationszeichenfolge

4.8 Verbindung zwischen Vorhängen: Codierungsstil

Python hat PEP 8 als Styleguide, dem die meisten Projekte folgen.

Die folgenden Punkte

Kapitel 5 Datenstruktur (7 Fragen, 17,50%)

Ergänzung zur Liste

Listenmethode append(x) extend(L) insert(i,x) remove(x) pop ([i]) Entfernt das Element an der angegebenen Position in der Liste aus der Liste und gibt dieses Element zurück. Wenn nicht angegeben, wird das Element am Ende der Liste als Ziel ausgewählt. Entspricht clear () del a [:] index(x) countx(x) list.sort(key=None,reverse=False) list.reverse() list.copy () Gibt eine flache Kopie der Liste zurück. Entspricht einem [:]. list.count (x) Anzahl der x in der Liste

>>> key = ['001','002','003','002','005','006','003','009']
>>> print(key.count('001'),key.count('002'),key.count('003'))
1 2 2
>>> key.reverse()
>>> key
['009', '003', '006', '005', '002', '003', '002', '001']
>>> key.sort()
>>> key
['001', '002', '002', '003', '003', '005', '006', '009']
>>> key.append('010')
>>> key
['001', '002', '002', '003', '003', '005', '006', '009', '010']
>>> key.insert(2,'020')
>>> key
['001', '002', '020', '002', '003', '003', '005', '006', '009', '010']
>>> key.extend(key)
>>> key
['001', '002', '020', '002', '003', '003', '005', '006', '009', '010', '001', '002', '020', '002', '003', '003', '005', '006', '009', '010']:

Verwenden Sie die Liste als Stapel

Listentypmethode(Pop und anhängen)Kann die Liste als Stapel verwenden.


>>> stack = [3, 4, 5]
>>> stack.append(6)
>>> stack.append(7)
>>> stack
[3, 4, 5, 6, 7]
>>> stack.pop()
7
>>> stack.pop()
6
>>> stack
[3, 4, 5]

Liste als Warteschlange verwenden

Es ist möglich, eine Liste als Warteschlange zu verwenden, aber die Listenmethode ist nicht effizient. Es ist schneller, am Ende der Liste hinzuzufügen oder zu platzieren. Das Einfügen und Einfügen an den Anfang der Liste ist langsam. (Weil es notwendig ist, andere Elemente einzeln zu verschieben). Verwenden Sie collection.deque.

>>> from collections import deque
>>> queue = deque(["Eric", "John", "Michael"])
>>> queue.append("Terry")
>>> queue.append("Graham")
>>> queue.popleft()
'Eric'
>>> queue.popleft()
'John'
>>> queue
deque(['Michael', 'Terry', 'Graham'])

Liste enthalten ★ Überprüfung zu einem späteren Zeitpunkt ★

>>> squares = []
>>> for x in range(10):
...     squares.append(x**2)
...
>>> squares
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

>>> squares = list(map(lambda x: x**2, range(10)))  #Das gleiche wie oben
>>> squares
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> squares = [x**2 for x in range(10)]              #Das gleiche wie oben:Listeneinschluss
>>> squares
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
>>> #Entspricht dem oben genannten
>>> combs = []
>>> for x in [1,2,3]:
...      for y in [3,1,4]:
...          if x != y:
...              combs.append((x, y))   #Wenn der Ausdruck ein Taple ist, muss der Tapple eine kreisförmige Klammer haben:Brauchen
...
>>> combs
[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
>>> [[x, y] for x in [1,2,3] for y in [3,1,4] if x != y]
[[1, 3], [1, 4], [2, 3], [2, 1], [2, 4], [3, 1], [3, 4]]
>>> vec = [-4, -2, 0, 2, 4]
>>> [x*2 for x in vec]
[-8, -4, 0, 4, 8]
>>> [x for x in vec if x >= 0]
[0, 2, 4]
>>> [abs(x) for x in vec]
[4, 2, 0, 2, 4]
>>> freshfruit = ['  banana', '  loganberry ', 'passion fruit  ']
>>> [weapon.strip() for weapon in freshfruit]
['banana', 'loganberry', 'passion fruit']
>>> [(x, x**2) for x in range(6)]      #Generieren Sie eine Liste der binären Taples
[(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25)]
>>> [x, x**2 for x in range(6)]      #Fehler, wenn Taple nicht in Klammern steht
  File "<stdin>", line 1
    [x, x**2 for x in range(6)]
               ^
SyntaxError: invalid syntax
>>> vec = [[1,2,3], [4,5,6], [7,8,9]]    #Glatte Liste (eine Dimension): Verwenden Sie zwei für
>>> [num for elem in vec for num in elem]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> from math import pi
>>> [str(round(pi, i)) for i in range(1, 6)]
['3.1', '3.14', '3.142', '3.1416', '3.14159']

Aufnahme verschachtelter Listen

Vertauschen Sie Zeilen und Spalten in der Matrix.


>>> matrix = [         # matrix = [[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12],]
...     [1, 2, 3, 4],
...     [5, 6, 7, 8],
...     [9, 10, 11, 12],
... ]
>>> [[row[i] for row in matrix] for i in range(4)]   #Einschlussnotation
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

 #Gleichwertig
>>> transposed = []
>>> for i in range(4):
...     transposed.append([row[i] for row in matrix])
...
>>> transposed
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

 #Entspricht dem Folgenden
>>> transposed = []
>>> for i in range(4):
...     transposed_row = []
...     for row in matrix:
...         transposed_row.append(row[i])
...     transposed.append(transposed_row)
...
>>> transposed
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

In der Praxis ist es besser, die integrierte Funktion zip () zu verwenden, als komplizierte Flussausdrücke zu verwenden. zip () -Funktion: Eine Funktion, die Elemente mehrerer iterierbarer Objekte (Listen, Taples usw.) kombiniert.

>>> list(zip(*matrix))
[(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)]

Referenz: Zusätzliche Bestätigung.


>>> [row[i] for row in matrix3]  # 
[4, 8, 12]
>>> [i for row in matrix3]     # 
[3, 3, 3]
>>> matrix3
[[1, 2, 3, 4, 99], [5, 6, 7, 8, 91], [9, 10, 11, 12, 92, 93]]
>>> [[row[i] for row in matrix3] for i in range(5)]
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12], [99, 91, 92]]
>>> [[row[i] for row in matrix3] for i in range(6)]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <listcomp>
  File "<stdin>", line 1, in <listcomp>
IndexError: list index out of range

für a, b, c in zip (A, B, C) # Iterieren Sie mehrere Sequenzen

Referenz: zip().


>>> names = ['Alice', 'Bob', 'Charlie']
>>> ages = [24, 50, 18]
>>> for name, age in zip(names, ages):
...     print(name, age)
...
Alice 24
Bob 50
Charlie 18

del Aussage

>>> a = [-1, 1, 66.25, 333, 333, 1234.5]
>>> del a[0]
>>> a
[1, 66.25, 333, 333, 1234.5]
>>> del a[2:4]
>>> a
[1, 66.25, 1234.5]
>>> del a[:]  #Löschen Sie alle Werte
>>> a
[]
>>> del a     #Löschen Sie die gesamte Variable
>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

Taple und Sequenz

-Sequenzdatentyp: - Liste, Tupel, Bereich usw. ・ Tupel Sie müssen es nicht in Klammern setzen, wenn Sie einen Taple schreiben Möglicherweise benötigen Sie Klammern (wenn der Tapple Teil eines größeren Ausdrucks war) Sie können die Elemente des Taple nicht ersetzen. Unveränderlich. Das Tupel kann veränderbare Typen wie Listen enthalten. Auf Elemente wird häufig durch Entpacken von Operationen oder Indizes (oder Attributen im Fall von Namedtuples) zugegriffen.

Taple.


>>> t = 12345, 54332, 'hello!'
>>> t
(12345, 54332, 'hello!')
>>> t[0]
12345
>>> u = t, (1, 2, 3, 4, 5)
>>> u           #Taples können verschachtelt werden
((12345, 54332, 'hello!'), (1, 2, 3, 4, 5))
>>> t[0] = 88888     #Taple kann nicht geändert werden
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

Packen / Auspacken.


>>> t = 12345, 54321, 'hello!'    #Taple Pack(tuple packing)
>>> x, y, z = t                   #Sequenz auspacken(sequence unpacking)
>>> x
12345
>>> y
54321
>>> z
'hello!'

Taple-Methode.


>>> key0 = ('001','002','003','002','005','006','003','009')
>>> key0.count('002')
2
>>> key0.append('099')   #Eine Änderungsmethode ist nicht möglich
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>

AttributeError: 'tuple' object has no attribute 'append'

einstellen

Eine Sammlung ungeordneter Elemente ohne überlappende Elemente

Die grundlegende Verwendung besteht darin, die Existenz zu bestimmen und doppelte Einträge zu beseitigen Unterstützt mathematische Operationen wie Summe (Vereinigung), Produkt (Schnittmenge), Differenz (Differenz) und symmetrische Differenz (symmetrische Differenz)

>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket)
{'banana', 'apple', 'orange', 'pear'}
>>> 'orange' in basket
True
>>> 'crabgrass' in basket
False
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a
{'c', 'd', 'a', 'b', 'r'}       # 'abracadabra'Doppelte Elemente entfernt von'abrcd'
(Referenz 2.7)set(['a', 'r', 'b', 'c', 'd'])
>>> a - b               #Differenz gesetzt(Gleiches gilt für die Differenzmethode)
{'d', 'r', 'b'}
>>> a | b                           #Summensatz(Gleiches gilt für die Gewerkschaftsmethode)
{'c', 'z', 'm', 'l', 'd', 'a', 'b', 'r'}
>>> a & b                           #Produktset(Gleiches gilt für die Schnittmethode): Zeichen, die in a und b wieder existieren
{'c', 'a'}
>>> a ^ b                          #Exklusiver logischer Summensatz(symmetric_Gleiches gilt für die Differenzmethode): Gelegentliche Zeichen in a oder b
{'d', 'z', 'm', 'r', 'b', 'l'}

Unterstützt die Einbeziehung von Sets.


>>> a = {x for x in 'abracadabra' if x not in 'abc'}
>>> a
{'r', 'd'}

(Außer Reichweite) Element hinzufügen, um myset.add (x) festzulegen Löschen Sie Elemente aus set myset.remove (x) Erstellen Sie einen Set-Typ aus einem Listentyp

>>> mylist = [2, 1, 3, 1]
>>> myset = set(mylist)
>>> print(myset)
{1, 2, 3}

Wörterbuch (Wörterbuch)

Ein ungeordneter Satz von Schlüsseln (eindeutig) und Werten

Schlüsselwert Es kann nur ein unveränderlicher Typ eingegeben werden Ein Taple kann ein Schlüssel sein, wenn er nur Zeichenfolgen, Zahlen oder andere Taples enthält. Sie können nicht auflisten. )

>>> tel = {'jack': 4098, 'sape': 4139}
>>> tel['guido'] = 4127
>>> tel
{'jack': 4098, 'sape': 4139, 'guido': 4127}
>>> tel['jack']
4098
>>> del tel['sape']                  #Löschen(Fehler, falls nicht vorhanden)
>>> tel
{'jack': 4098, 'guido': 4127}             # 'sape'Wurde gelöscht
>>> tel['irv'] = 4127                                # 'irv'Hinzufügen
>>> tel
{'jack': 4098, 'guido': 4127, 'irv': 4127}        # 'irv'Position: 3er Serie(3.6.8)Ergebnis in.
(Referenz) {'jack': 4098, 'irv': 4127, 'guido': 4127}  # 'irv'Position: Buch,Klicken Sie hier für das Web. 2 System(2.7.5)Wenn Sie dies tun, wird das Ergebnis hier angezeigt. * Sie müssen sich keine Sorgen machen, da keine Bestellung vorliegt.
>>> tel['irv'] = 9999                                #Wert bearbeiten
>>> tel
{'jack': 4098, 'guido': 4127, 'irv': 9999}               
>>> list(tel.keys())
['jack', 'guido', 'irv']
>>> sorted(tel.keys())
['guido', 'irv', 'jack']
>>> 'guido' in tel              #Existenzprüfung
True
>>> 'jack' not in tel
False

dict()Der Konstruktor generiert ein Wörterbuch aus einer Liste, die ein Tupel von Schlüssel / Wert-Paaren enthält.


>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
{'sape': 4139, 'guido': 4127, 'jack': 4098}      #3er Serie(3.6.8)Ausführungsergebnis in
(Referenz){'sape': 4139, 'jack': 4098, 'guido': 4127}  #2 System(2.7.5)Ausführungsergebnis in

Wenn der Schlüssel eine einfache Zeichenfolge ist, definieren Sie ihn mithilfe von Schlüsselwortargumenten und generieren Sie ein Wörterbuch.


>>> dict(sape=4139, guido=4127, jack=4098)
{'sape': 4139, 'guido': 4127, 'jack': 4098}      #3er Serie(3.6.8)Ausführungsergebnis in
(Referenz){'sape': 4139, 'jack': 4098, 'guido': 4127}  #2 System(2.7.5)Ausführungsergebnis in

Generieren Sie ein Wörterbuch aus einem beliebigen Schlüssel / Wert-Paar mithilfe von Wörterbucheinschlussausdrücken.


>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}
>>>dic = {'Noro': 1, 'Nakao': 2, 'Miyaoka': 3}
>>>dic['Miyaoka'] += 1
>>>print(dic)
{'Noro': 1, 'Nakao': 2, 'Miyaoka': 4}      #1 Zusatz! !!

Wörterbuchmethode update() copy() items() values() del clear()

Schleifentechnik

Beim Durchlaufen eines Wörterbuchs werden Elemente angezeigt()Mit dieser Methode können Sie den Schlüssel und seinen entsprechenden Wert gleichzeitig abrufen..


>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
>>> for k, v in knights.items():
...     print(k, v)
... 
gallahad the pure
robin the brave

Aufzählung beim Durchlaufen einer Sequenz()Mit Funktionen können Elementindizes und Elemente gleichzeitig abgerufen werden.


>>> for i, v in enumerate(['tic', 'tac', 'toe']):
...     print(i, v)
...
(0, 'tic')   #Elementindex, Wert
(1, 'tac')
(2, 'toe')

Funktion zip, um zwei oder mehr Sequenztypen gleichzeitig zu schleifen()Verwenden Sie diese Option, um jedes Element zu kombinieren.


>>> questions = ['name', 'quest', 'favorite color']
>>> answers = ['lancelot', 'the holy grail', 'blue']
>>> for q, a in zip(questions, answers):
...     print('What is your {0}?  It is {1}.'.format(q, a))
...
What is your name?  It is lancelot.
What is your quest?  It is the holy grail.
What is your favorite color?  It is blue.

Geben Sie den Bereich der Sequenz in Vorwärtsrichtung an, und kehren Sie dann die Funktion um()Anruf.

>>> for i in reversed(range(1, 10, 2)):
...     print(i)
...
9
7
5
3
1

Schleife die Sequenz in sortierter Reihenfolge: sortiert()Verwenden Sie eine Funktion. (Gibt ein neues sortiertes Array zurück, ohne das ursprüngliche Array zu ändern.).


>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
>>> for f in sorted(set(basket)):
...     print(f)
...
apple
banana
orange
pear

In einigen Fällen ist es einfacher und sicherer, eine neue Liste zu erstellen, als die Liste zu ändern.


>>> import math
>>> raw_data = [56.2, float('NaN'), 51.7, 55.3, 52.5, float('NaN'), 47.8]
>>> filtered_data = []
>>> for value in raw_data:
...     if not math.isnan(value):
...         filtered_data.append(value)
...
>>> filtered_data
[56.2, 51.7, 55.3, 52.5, 47.8]

5.7 Ergänzende Informationen zu den Bedingungen

Für die in den while- und if-Anweisungen verwendete Bedingung gibt es andere Operatoren sowie Wertevergleiche.

-Operatoren ist und ist nicht: Ob die beiden Objekte tatsächlich dasselbe Objekt sind. Nur für veränderbare Objekte wie Listen von Bedeutung. * Ist jedoch ein unveränderliches Singleton-Objekt wie None Es kann zum Vergleich mit (nur im Internet beschrieben) verwendet werden. - Alle Vergleichsoperatoren haben dieselbe Priorität und beide haben eine niedrigere Priorität als numerische Operatoren. - Vergleichskette: a <b == c Sie können Vergleichsoperationen mit den Test-Booleschen Operatoren kombinieren und und oder, um festzustellen, ob a kleiner als b ist und b und c gleich sind. Ablehnung ist nicht. Es hat eine niedrigere Priorität als andere Vergleichsoperatoren. -Die Booleschen Operatoren und und oder werden oft als Kurzschlussoperatoren bezeichnet. : Operatorargumente werden in der Reihenfolge von links nach rechts ausgewertet, und die Auswertung wird gestoppt, wenn das Ergebnis bestätigt wird.

>>> string1, string2, string3 = '', 'Trondheim', 'Hammer Dance'
>>> non_null = string1 or string2 or string3
>>> non_null
'Trondheim'

5.8 Sequenzvergleich, anderer Typvergleich

-Sequenzobjekte können mit Objekten mit demselben Sequenztyp verglichen werden. -Im Modul kann der Modulname (der Zeichenfolge) mit der globalen Variablen name abgerufen werden. (Vergleichsmethode) ★★ ・ Vergleiche in lexikalischer Reihenfolge -Wenn die Vergleichsergebnisse aller Elemente der beiden Sequenzen gleich sind, werden die Sequenzen als gleich angesehen. -Wenn eine Sequenz eine Teilsequenz ist, die dem Anfang der anderen entspricht, wird die kürzere Sequenz als die kleinere Sequenz angesehen.

>>> (1, 2, 3)              < (1, 2, 4)
True
>>> [1, 2, 3]              < [1, 2, 4]
True
>>> (1, 2, 3, 4)           < (1, 2, 4)
True
>>> (1, 2)                 < (1, 2, -1)
True
>>> 'ABC' < 'C' < 'Pascal' < 'Python'         #Wörterbuchreihenfolge
True
>>> (1, 2, 3)             == (1.0, 2.0, 3.0)     #0 und 0.0 ist äquivalent
True
>>> (1, 2, ('aa', 'ab'))   < (1, 2, ('abc', 'a'), 4)
True

(Memo) Zeichenvergleich: Ich habe ein wenig recherchiert, weil der Standard in der Reihenfolge des Wörterbuchs unbekannt war, aber ich habe ihn nicht sofort verstanden, also habe ich nur die Bewegung untersucht. Zumindest scheint es in der Reihenfolge des Asscii-Codes zu sein.

>>> 'C' < 'c'   # 'C':0x43、'c':0x63
True
>>> 'c' < 'C'
False
>>> 'c' < 'c'
False
>>> 'C' < 'C'
False
>>> '(' < ')'   # '(':0x28、')':0x29
True
>>> ')' < '('
False

TypeError zum Vergleichen von Zeichenfolgen und Zahlen, Listen und Taples.


>>> 'ab' < 3                   #Zeichenfolgen und Zahlen.
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'str' and 'int'
>>> (1,3,5) < [1,3,6]           #Liste und Taple.
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'tuple' and 'list'

Kapitel 6 Modul (2 Fragen, 5,00%)

>>> import fibo
>>> fibo.fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377

-Ein Modul ist eine Datei, die Python-Definitionen und -Anweisungen enthält. Der Dateiname lautet "Modulname + .py" ・ Wenn Sie die Funktion häufig verwenden möchten, können Sie sie einer lokalen Variablen zuweisen.

>>> import fibo
>>> fib = fibo.fib   #Kann einer lokalen Variablen zugewiesen werden(Moduldefinition weggelassen)
>>> fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377

Weiter zum Modul

*** importieren *** *** aus <Funktions- / Variablenname> importieren ***

>>> from fibo import fib, fib2
>>> fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377

-Es gibt auch eine Variante, die alle im Modul definierten Namen importiert.

>>> from fibo import *
>>> fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377

-Verwendung der Funktion importlib.reload () (imp.reload () von 3.4 bis 3.3) Aus Effizienzgründen wird jedes Modul nur einmal pro Sitzung des Interpreters importiert. Laden Sie neu, wenn Sie das Modul reparieren und sofort testen möchten.

Führen Sie das Modul als Skript aus

-Wenn das Skript mit "python fibo.py " ausgeführt wird, wird main in name gesetzt.

if __name__ == "__main__":
    import sys
    fib(int(sys.argv[1]))

Modul-Suchpfad

Reihenfolge beim Importieren eines Moduls namens Spam

    1. Eingebautes Modul
  1. Suchen Sie die Datei mit dem Namen spam.py in der Liste der Verzeichnisse in sys.path (Initialisieren Sie sys.path an der folgenden Position.) * Nach der Initialisierung kann sys.path programmgesteuert geändert werden. 2.1. Das Verzeichnis, das das eingegebene Skript enthält (oder das aktuelle Verzeichnis, wenn keine Datei angegeben ist). 2.2. PYTHONPATH (Liste der Verzeichnisnamen, gleiche Syntax wie die Shell-Variable PATH). 2.3. Standard für jede Installation.

Python-Datei "kompiliert"

Zwischenspeichern Sie jedes kompilierte Modul als "module.version.pyc" -Datei im Verzeichnis "pycache", um das Laden des Moduls zu beschleunigen

# ll -R
drwxr-xr-x 2 root root 33 1. Januar 08:31 __pycache__
-rw-r--r--1 Wurzel Wurzel 376 1. Januar 08:48 fibo.py

./__pycache__:
-rw-r--r--1 Wurzel Wurzel 503 1. Januar 08:31 fibo.cpython-36.pyc

· Python vergleicht das Datum und die Uhrzeit der Quelländerung mit der kompilierten Version und überprüft automatisch, ob die kompilierte Version veraltet ist und neu kompiliert werden muss. -Kompilierte Module sind plattformunabhängig, sodass dieselbe Bibliothek von Systemen mit unterschiedlichen Architekturen gemeinsam genutzt werden kann. ・ Zwei Fälle, in denen der Cache nicht überprüft wird

Kompilieren Sie immer neu, wenn das Modul direkt über die Befehlszeile geladen wird Ohne Quellmodul

Standardmodul

Das Winreg-Modul wird nur auf Windows-Systemen bereitgestellt Variablen sys.ps1 und sys.ps2 Definieren Sie die Zeichenfolgen, die in den primären und sekundären Eingabeaufforderungen angezeigt werden sollen

sys.Pfad wird auf den Standardpfad festgelegt, der von der Umgebungsvariablen PYTHONPATH abgerufen wird, oder auf den integrierten Standardwert, wenn PYTHONPATH nicht festgelegt ist..


>>> import sys
>>> sys.path.append('/ufs/guido/lib/python')

dir () Funktion

Sie können den vom Modul definierten Namen sehen. Gibt eine sortierte Liste von Zeichenfolgen zurück.

>>> import fibo, sys
>>> dir(fibo)
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'fib', 'fib2']
>>> dir(sys)
['__displayhook__', '__doc__', '__excepthook__', '__interactivehook__', '__loader__', '__name__', '__package__', '__spec__',(Kürzung)

Ohne Argumente, dir()Listet die aktuell definierten Namen auf.


>>> a = [1, 2, 3, 4, 5]
>>> fib = fibo.fib
>>> dir()            #Keine Argumente
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'a', 'fib', 'fibo', 'sys']

Die Liste der integrierten Funktions- und Variablennamen verwendet die integrierten Standardmodule. * Nicht aufgeführt von dir ()

>>> import builtins
>>> dir(builtins)
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError',(Kürzung)

Paket

So erstellen Sie ein Python-Modul mit dem "Punkt-getrennten Modulnamen"

-Modulname A.B → Repräsentiert das Submodul B des Pakets A. · Autoren von Paketen mit mehreren Modulen müssen sich nicht mehr um die Modulnamen der anderen kümmern -Die Datei init.py ist erforderlich, damit Python ein Verzeichnis als Verzeichnis mit Paketen behandelt. -Im einfachsten Fall kann init.py nur eine leere Datei sein, aber init.py kann Initialisierungscode für das Paket ausführen oder all Variablen setzen.

Importieren Sie einzelne Module aus dem Paket(Fall 1).


>>> import sound.effects.echo
>>> sound.effects.echo.echofilter(input, output, delay=0.7, atten=4) #Muss mit vollem Namen referenziert werden

Importieren Sie einzelne Module aus dem Paket(Fall 2).


>>> from sound.effects import echo
>>> echo.echofilter(input, output, delay=0.7, atten=4)     #Verfügbar ohne Paketnamen

Importieren Sie einzelne Module aus dem Paket(Fall 3).


from sound.effects.echo import echofilter
echofilter(input, output, delay=0.7, atten=4)  #Methode direkt verfügbar

-Wenn Sie die Syntax "aus Paketimportelement" verwenden item kann ein Submodul (oder Subpaket) des Paketpakets sein Andere im Paket definierte Namen wie Funktionen, Klassen, Variablen usw. Die import-Anweisung prüft zunächst, ob das Element im Paket definiert ist. Wenn nicht definiert, wird versucht, das Modul zu laden, vorausgesetzt, Element ist der Modulname. Wird kein Modul gefunden, wird ein ImportError ausgelöst

-Wenn Sie die Syntax von "import item.subitem.subsubitem" verwenden Jedes Element außer dem letzten Unterelement muss ein Paket sein

Importieren Sie * aus dem Paket

Lassen Sie den Paketautor den Paketindex explizit angeben

「from sound.effects import * 」

Gegenseitige Bezugnahme innerhalb des Pakets

Pakete, die mehrere Verzeichnisse umfassen

Unterstützt path als spezielles Attribut Das Attribut path steht vor der Ausführung des Codes in init.py des Pakets. Initialisiert als Liste mit den Verzeichnisnamen, die init.py enthalten

Kapitel 7 Eingabe / Ausgabe|1 |2.50%|

Aufwändiges Ausgabeformat

-Wie wird der Wert ausgegeben:

Ausdrucksanweisung Funktion print () Dateiobjekt write () -Methode

-Die Datei, die die Standardausgabe darstellt, kann in sys.stdout referenziert werden. ・ So formatieren Sie die Ausgabe

Verwenden Sie String-Slicing- und Verkettungsoperationen, um die gesamte String-Verarbeitung durchzuführen Verwenden Sie die str.format-Methode Verwenden Sie die Template-Klasse des String-Moduls So konvertieren Sie einen Wert in eine Zeichenfolge: Übergeben Sie den Wert an die Funktion repr () oder str ().

-Die Funktion str () dient zur Rückgabe einer für Menschen lesbaren Darstellung des Werts. Die Funktion repr () soll eine vom Interpreter lesbare Darstellung (oder SyntaxError, wenn keine äquivalente Syntax vorhanden ist) zurückgeben. Für Objekte, die keine spezifische Darstellung haben, die für das menschliche Lesen geeignet ist, gibt str () den gleichen Wert wie repr () zurück.

>>> s = 'Hello, world.'
>>> str(s)
'Hello, world.'
>>> repr(s)
"'Hello, world.'"
>>> str(1/7)
'0.14285714285714285'
>>> repr(1/7)
'0.14285714285714285'
>>> x = 10 * 3.25
>>> y = 200 * 200
>>> s = 'The value of x is ' + repr(x) + ', and y is ' + repr(y) + '...'
>>> print(s)
The value of x is 32.5, and y is 40000...
>>> str(s)
'The value of x is 32.5, and y is 40000...'
>>> repr(s)
"'The value of x is 32.5, and y is 40000...'"
>>> hello = 'hello, world\n'
>>> hellos = repr(hello)
>>> print(hellos)
'hello, world\n'
>>> str((x, y, ('spam', 'eggs')))
"(32.5, 40000, ('spam', 'eggs'))"
>>> repr((x, y, ('spam', 'eggs')))
"(32.5, 40000, ('spam', 'eggs'))"

Schreiben Sie eine quadratische und eine kubische Tabelle auf zwei Arten.


>>> for x in range(1, 11):
...     print(repr(x).rjust(2), repr(x*x).rjust(3), end=' ')
...     print(repr(x*x*x).rjust(4))
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000
>>> for x in range(1, 11):
...     print('{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x))
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000

str.rjust (width [, fillchar]) -Methode ・ ・ ・ Gibt eine rechtsbündige Zeichenfolge mit der Länge zurück. Wenn fillchar angegeben ist, wird es mit den angegebenen Zeichen gefüllt. str.ljust (width [, fillchar]) -Methode ・ ・ ・ Gibt eine linksbündige Zeichenfolge mit der Länge zurück. Wenn fillchar angegeben ist, wird es mit den angegebenen Zeichen gefüllt. Wenn Sie Zeichen abschneiden möchten, verwenden Sie Slices und x.ljust (n) [: n]. Round () zum Runden. str.center (width [, fillchar]) -Methode ・ ・ ・ Gibt eine zentrierte Zeichenfolge mit der Länge zurück. Wenn fillchar angegeben ist, wird es mit den angegebenen Zeichen gefüllt. str.zfill () -Methode: Füllt die linke Seite der numerischen Zeichenfolge mit Null

>>> '12'.zfill(5)
'00012'
>>> '-3.14'.zfill(7)
'-003.14'
>>> '3.14159265359'.zfill(5)
'3.14159265359'

str.format () -Methode

Klammern und die Zeichen in ihnen(Dies wird als Formatfeld bezeichnet).


>>> print('We are the {} who say "{}!"'.format('knights', 'Ni'))
We are the knights who say "Ni!"

Die Zahl in Klammern ist str.format()Kann verwendet werden, um die Position des an die Methode übergebenen Objekts darzustellen.


>>> print('{0} and {1}'.format('spam', 'eggs'))
spam and eggs
>>> print('{1} and {0}'.format('spam', 'eggs'))
eggs and spam

str.format()Wenn ein Schlüsselwortargument an die Methode übergeben wird, wird sein Wert durch den Namen des Schlüsselwortarguments referenziert.


>>> print('This {food} is {adjective}.'.format(
...       food='spam', adjective='absolutely horrible'))
This spam is absolutely horrible.

Sie können auch Ordnungs- und Schlüsselwortargumente kombinieren.


>>> print('The story of {0}, {1}, and {other}.'.format('Bill', 'Manfred',other='Georg'))
The story of Bill, Manfred, and Georg.

'!a'(ascii()Anpassen)Oder'!s'(str()Anpassen)Oder'!r'(repr()Anpassen)Kann vor dem Formatieren des Werts mit konvertiert werden.


>>> contents = 'eels'
>>> print('My hovercraft is full of {}.'.format(contents))
My hovercraft is full of eels.
>>> print('My hovercraft is full of {!r}.'.format(contents))
My hovercraft is full of 'eels'.

Steuerbar, wie Werte durch Formatbezeichner formatiert werden.


>>> import math
>>> print('The value of PI is approximately {0:.3f}.'.format(math.pi))
The value of PI is approximately 3.142.

'Geben Sie die minimale Zeichenbreite des Felds an, indem Sie eine Ganzzahl hinzufügen.


>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}
>>> for name, phone in table.items():
...     print('{0:10} ==> {1:10d}'.format(name, phone))
...
Sjoerd     ==>       4127
Jack       ==>       4098
Dcab       ==>       7678

Übergeben Sie das Wörterbuch als Argument und setzen Sie eckige Klammern'[]'Sie können mit auf den Wörterbuchschlüssel verweisen.


>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
>>> print('Jack: {0[Jack]:d}; Sjoerd: {0[Sjoerd]:d}; '
...       'Dcab: {0[Dcab]:d}'.format(table))
Jack: 4098; Sjoerd: 4127; Dcab: 8637678

Tabelle**] Übergeben als Schlüsselwortargument in Notation.


>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
>>> print('Jack: {Jack:d}; Sjoerd: {Sjoerd:d}; Dcab: {Dcab:d}'.format(**table))
Jack: 4098; Sjoerd: 4127; Dcab: 8637678

Alte String-Formatierungsmethode

Zeichenfolgenformatierung mit dem Operator%

>>> import math
>>> print('The value of PI is approximately %5.3f.' % math.pi)
The value of PI is approximately 3.142.

Dateien lesen und schreiben

Zweites Argument von open: * Wie fopen in C-Sprache

Modus Bewegung Wenn es eine Datei gibt Wenn die Datei nicht existiert
r (Standardmäßig) Schreibgeschützt Keine Änderung Error
w Nur zum Schreiben Größe auf 0 setzen (überschreiben) Erstelle neu
a Nur zum zusätzlichen Schreiben Zum Dateiende hinzufügen Erstelle neu
r+ Lesen und Schreiben Keine Änderung Error
w+ Schreiben und Lesen Größe auf 0 setzen (überschreiben) Erstelle neu
a+ Lesen und zusätzliches Schreiben Zum Dateiende hinzufügen Erstelle neu

Textmodus und Binärmodus ・ Textmodus (Standard) Zeilenvorschubcode konvertieren Zeilenvorschubcode als EOF (Dateiende) behandeln ・ Binärmodus (b) ・ ・ ・ Geben Sie hier Binärdaten wie JPG und EXE an. Konvertieren Sie keinen Zeilenvorschubcode Behandeln Sie den Zeilenvorschubcode nicht als EOF (Dateiende). Spezifikationsmethode: Kombinieren Sie mit dem obigen Modus und setzen Sie auf 'rb' und 'r + b'. (B kann entweder vorne oder hinten sein, aber b ist hinten)

Datei öffnen.


f = open('workfile','wb')

Dateiobjektmethode

lesen und lesenline

f.read(size)Einlesen.


f = open('workfile','w')
>>> f.read()
'123\n456\n'

f.read(size)Nach Größe lesen.


>>> f.read(5)
'123\n4'                    #Gibt eine Zeichenfolge angegebener Bytes zurück
>>> f.read(5)
'56\n'            #Wenn die angegebenen Bytes nicht erreicht werden, wird nur die vorhandene Zeichenfolge zurückgegeben.
>>> f.read(5)
''              #Wenn Sie das Ende erreichen''Gib es zurück

Lesen Sie mit readline.


>>> f.readline()
'123\n'           #Gibt Zeile für Zeile zurück
>>> f.readline()
'456\n'
>>> f.readline()
''              #Wenn Sie das Ende erreichen''Gib es zurück

Um mehrere Zeilen aus einer Datei zu lesen, schreiben Sie eine Schleife in das Dateiobjekt.


>>> f = open('workfile','r+')
>>> for line in f:
...     print(line, end='')
...
123
456

Sie können auch list (f) oder f.readlines () verwenden, wenn Sie jede Zeile der Datei im Listenformat lesen möchten

Datei schreiben.


>>> f = open('workfile','r+')
>>> f.write('This is a test\n') #Datei schreiben
15                              #Die Anzahl der geschriebenen Zeichen wird zurückgegeben
>>> f.close()
>>> f = open('workfile','r+')  #Überprüfen Sie unten
>>> f.read()
'This is a test\n'
>>> f.close()

Andere Objekttypen müssen vor dem Schreiben konvertiert werden Entweder eine Zeichenfolge (Textmodus) oder ein Byteobjekt (Binärmodus)

>>> f = open('workfile','r+')
>>> value = ('the answer', 42)
>>> s = str(value)      #String
>>> value
('the answer', 42)
>>> s
"('the answer', 42)"
>>> f.write(s)
18
>>> f.close()

f.tell () ・ ・ ・ Gibt eine Ganzzahl zurück, die die aktuelle Position in der Datei angibt f.seek (Versatz, Startpunkt) ・ ・ ・ Wenn Sie die aktuelle Position ändern möchten Startpunkt: Dateistart "0" (Standard), aktuelle Position "1", Dateiende "2"

Lesefehler ohne Öffnen der Datei * Web wird beim Lesen und Schreiben von Dateien beschrieben.


>>> f.close()
>>> f.read()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: I/O operation on closed file.

Verwenden Sie das Schlüsselwort mit, wenn Sie mit Dateiobjekten arbeiten. Wenn Sie eine Reihe von Untersuchungen beenden, wird die Datei ordnungsgemäß geschlossen und es treten Ausnahmen in der Mitte auf. Viel kürzer als der Aktionsblock der Partei.

Datei öffnen / lesen * Web wird unter Lesen / Schreiben von Dateien beschrieben.


>>> with open('workfile') as f:
...     read_data = f.read()
...
>>> f.closed
True

Dateiobjekte verfügen auch über Methoden wie isatty () und truncate (), werden jedoch selten verwendet

Strukturierte Daten in json speichern ★ Separat zusammenfassen ★

Zeichenketten können frei gelesen und in Dateien geschrieben werden, numerische Werte erfordern jedoch einen geringen Aufwand. Die read () -Methode gibt nur einen String zurück, daher müssen Sie eine Funktion wie int () durchlaufen. Wenn es um komplexe Daten geht, ist es kompliziert, dies manuell zu tun.

Python erleichtert die Arbeit mit JSON

>>> import json
>>> json.dumps([1, 'simple', 'list'])
'[1, "simple", "list"]'
>>> import json
>>> x = {'name':'yamada','data':[2,3,4]}
>>> print(json.dumps(x))
{"name": "yamada", "data": [2, 3, 4]}

dump ・ ・ ・ Serialisieren Sie das Objekt einfach in eine Textdatei Laden ・ ・ ・ Deserialisieren

(Siehe) Gurkenmodul Ein Protokoll, mit dem Sie im Gegensatz zu JSON jedes komplexe Python-Objekt serialisieren können. Es ist jedoch nur in Python verfügbar und kann nicht zur Kommunikation mit Anwendungen verwendet werden, die in anderen Sprachen geschrieben sind. Außerdem ist es standardmäßig nicht sicher.

Kapitel 8 Fehler und Ausnahmen (4 Fragen, 10,00%)

Der Anzeigeinhalt der Fehlermeldung, wenn eine Ausnahme in der Funktion auftritt, ist wichtig

Syntaxfehler (Analysefehler)

Tritt auf, weil es nicht den von Python festgelegten Regeln entspricht. Fehler bei der Syntaxinterpretation (Analyse) Anzeige: SyntaxError

Ausnahme

Selbst wenn der Feldausdruck syntaktisch korrekt ist, tritt bei seiner Ausführung ein Fehler auf. Anzeige: ZeroDivisionError, NameError, TypeError usw. Es gibt eine Liste der integrierten Ausnahmen in Integrierte Ausnahmen.

♯ ## Ausnahmebehandlung Verhalten der try-Anweisung

    1. Die try-Klausel (die Anweisung zwischen den Schlüsselwörtern try und Except) wird ausgeführt.
  1. Wenn keine Ausnahme auftritt, überspringen Sie die Ausnahmeklausel und beenden Sie die Ausführung der try-Anweisung.
    1. Wenn während der Ausführung einer try-Klausel eine Ausnahme auftritt, wird der Rest dieser Klausel übersprungen. Wenn der Ausnahmetyp mit der nach dem Schlüsselwort exception angegebenen Ausnahme übereinstimmt, wird das Programm nach der try-Anweisung fortgesetzt, nachdem die Except-Klausel ausgeführt wurde.
  2. Wenn der Ausnahmetyp nicht mit dem Namen in der Ausnahmeklausel übereinstimmt, wird die erstellte Ausnahme an die äußere try-Anweisung übergeben (wenn die try-Anweisung verschachtelt ist). Wenn der Handler (Handler) nicht gefunden wird, führt dies zu einer nicht behandelten Ausnahme und beendet die Ausführung mit einer Nachricht wie der oben gezeigten.

Geben Sie Handler für verschiedene Ausnahmen an, indem Sie mehrere Ausnahmeklauseln in einer try-Anweisung angeben

... except (RuntimeError, TypeError, NameError):

Variablen können nach dem Ausnahmenamen in der Ausnahmeklausel angegeben werden Die Variable ist an eine Ausnahmeinstanz gebunden, und instance.args enthält die Argumente zum Erstellen der Ausnahmeinstanz. Str () ist in der Ausnahmeinstanz definiert, und die Argumente können direkt gedruckt werden, ohne auf .args zu verweisen.

>>> try:
...     raise Exception('spam', 'eggs')
... except Exception as inst:
...     print(type(inst))
...     print(inst.args)
...     print(inst.args)
...     x, y = inst.args
...     print('x =', x)
...     print('y =', y)
...
<class 'Exception'>
('spam', 'eggs')
('spam', 'eggs')
x = spam
y = eggs

Der Ausnahmebehandler behandelt auch Ausnahmen, die innerhalb einer Funktion auftreten, die (auch indirekt) von der try-Klausel aufgerufen wird. (Nicht nur Ausnahmen, die direkt in der try-Klausel auftreten)

else-Klausel (else-Klausel) else ・ ・ Die else-Klausel wird ausgeführt, wenn in der try-Klausel keine Ausnahme ausgelöst wird. Die Anweisung try… without kann optional eine else-Klausel enthalten Wenn es eine else-Klausel gibt, muss sie doch mit Ausnahme der Klauseln eingefügt werden

for arg in sys.argv[1:]:
    try:
        f = open(arg, 'r')
    except IOError:
        print('cannot open', arg)
    else:
        print(arg, 'has', len(f.readlines()), 'lines')
        f.close()

Eine Ausnahme auslösen

Mit der Raise-Anweisung können Sie bestimmte Ausnahmen auslösen

Benutzerdefinierte Ausnahme

Sie können Ihre eigenen Ausnahmen in Ihr Programm aufnehmen, indem Sie eine neue Ausnahmeklasse erstellen. Sie können alles definieren, was eine normale Klasse tun kann, aber normalerweise nur dem Handler erlauben, Informationen über den Fehler abzurufen, wenn eine Ausnahme auftritt.

class Error(Exception):
    pass

class InputError(Error):
    def __init__(self, expression, message):  #Überschreiben
        self.expression = expression
        self.message = message

Definition des Bereinigungsverhaltens

Die finally-Klausel wird immer vor dem Beenden der try-Anweisung ausgeführt, unabhängig davon, ob eine Ausnahme aufgetreten ist.

Bereinigungsverhalten für das Objekt definiert

Das Problem unten ist, dass die Datei offen bleibt

for line in open("myfile.txt"):
    print(line, end="")

Die with-Anweisung stellt sicher, dass Objekte wie Dateien immer sofort und korrekt bereinigt werden.

with open("myfile.txt") as f:
    for line in f:
        print(line, end="")

Kapitel 9 Klasse (2 Fragen, 5,00%)

9.1. Ein Wort zu Namen und Objekten

Objekte haben Individualität, und demselben Objekt können mehrere Namen zugewiesen werden (aus mehreren Bereichen). (In anderen Sprachen wird es als Aliasing bezeichnet.)

9.2 Python-Bereich und Namespace

Ein Namespace ist eine Zuordnung von einem Namen zu einem Objekt. Ein Bereich ist ein Bereich von Programmtext, auf den direkt über einen Namespace zugegriffen werden kann.

9.3 Erste Klasse

9.3.1. Syntax der Klassendefinition

(Die einfachste Form) class ClassName: <Satz 1> . . .

9.3.2. Klassenobjekt

Klassenobjekte unterstützen zwei Arten von Operationen: Attributreferenz und Instanziierung.

Attributreferenz Instanziierung

>>> class Complex:
...     def __init__(self, realpart, imagpart):
...         self.r = realpart
...         self.i = imagpart
...
>>> x = Complex(3.0, -4.5)
>>> x.r, x.i
(3.0, -4.5)

9.3.3. Instanzobjekt

Instanzobjekte unterstützen nur Attributreferenzoperationen. Es gibt zwei Arten von Attributnamen, Datenattribute und Methoden

Datenattribute entsprechen Smalltalk "Instanzvariablen" und C ++ "Datenelementen" Eine Methode ist eine Funktion, die zu einem Objekt "gehört".

9.3.4. Methodenobjekt

9.3.5 Klassen- und Instanzvariablen

· Instanzvariablen sind für eindeutige Daten für jede Instanz · Klassenvariablen gelten für Attribute und Methoden, die von allen Instanzen dieser Klasse gemeinsam genutzt werden

9.4 Andere

-Datenattribute überschreiben Methodenattribute mit demselben Namen → Verwenden Sie Regeln, die die Möglichkeit einer Kollision minimieren Beginnen Sie den Methodennamen mit einem Großbuchstaben, stellen Sie dem Datenattributnamen eine kurze eindeutige Zeichenfolge (oder nur eine Unterstreichung) voran, verwenden Sie ein Verb für die Methode, verwenden Sie ein Substantiv für das Datenattribut usw. Das erste Argument der Methode heißt self, aber diese Benennung ist nur eine Konvention

9.5. Vererbung

class DerivedClassName(BaseClassName): <Satz 1> . . .

9.5.1 Mehrfachvererbung

class DerivedClassName(Base1,Base2,Base3):

Wenn das Attribut in DerivedClassName nicht vorhanden ist, wird es zuerst in Base1 und dann rekursiv in der Basisklasse von Base1 gesucht, und wenn es immer noch nicht gefunden wird, in Base2.

In Wirklichkeit ist es jedoch etwas komplizierter Die Reihenfolge der Methodenauflösung wird aufgrund des kollaborativen Aufrufs von super () dynamisch geändert. In anderen Sprachen mit Mehrfachvererbung als Call-Next-Methode bekannt, ist sie leistungsfähiger als der Superaufruf in Sprachen mit nur einer Vererbung.

9.6 Private Variablen

In Python gibt es keine "privaten" Instanzvariablen. Es ist jedoch üblich, Namen, die mit einem Unterstrich beginnen (z. B. _spam), als privat zu behandeln.

9.7 Reste

-Datentypen, die benannte Datenelemente gruppieren, wie z. B. Pascals "Datensatz" und C-Sprache "Struktur", werden mithilfe der Shell-Klassendefinition implementiert.

9.8. Ausnahmen sind auch Klassen * Web ist in Kapitel 8.3

9.9. Iterator (Iterator) * Kapitel 9.8 im Web

Mit der for-Anweisung können Sie die meisten Containerobjekte durchlaufen.

>>> for element in [1, 2, 3]:
...     print(element)
...
1
2
3
>>> for element in (1, 2, 3):
...     print(element)
...
1
2
3
>>> for key in {'one':1, 'two':2}:
...     print(key)
...
one
two
>>> for char in "123":
...     print(char)
...
1
2
3
>>> for line in open("workfile"):
...     print(line, end='')
...
0123456789abcdef2)>>>

Hinter den Kulissen ruft die for-Anweisung die Funktion iter () für das Containerobjekt auf.

-Die Funktion gibt ein Iteratorobjekt zurück, das die Methode next () definiert, die nacheinander auf die Elemente im Container zugreift. -Wenn keine weiteren Elemente vorhanden sind, löst die Methode next () eine StopIteration-Ausnahme aus, und die for-Schleife endet mit dem Empfang der Benachrichtigung.

Sie können die Methode next () auch direkt mit der integrierten Funktion next () aufrufen.

>>> s = 'abc'
>>> it = iter(s)
>>> it
<str_iterator object at 0x7fc6cf183eb8>
>>> next(it)
'a'
>>> next(it)
'b'
>>> next(it)
'c'
>>> next(it)
Traceback (most recent call last):  
  File "<stdin>", line 1, in <module>
StopIteration                  #Wirf eine StopIteration-Ausnahme aus

Es ist einfach, Ihrer Klasse iteratives Verhalten hinzuzufügen, wenn Sie die Mechanismen hinter dem Iteratorprotokoll beobachten.

Definieren Sie eine iter () -Methode, die ein Objekt mit einer next () -Methode zurückgibt. Wenn die Klasse die Methode next () definiert, kann die Methode iter () auch einfach self zurückgeben.

>>> class Reverse:
...     """Iterator for looping over a sequence backwards."""
...     def __init__(self, data):
...         self.data = data
...         self.index = len(data)
...     def __iter__(self):
...         return self
...     def __next__(self):
...         if self.index == 0:
...             raise StopIteration
...         self.index = self.index - 1
...         return self.data[self.index]
...
>>> rev = Reverse('123')
>>> iter(rev)
<__main__.Reverse object at 0x7fc6cf18ec88>
>>> for char in rev:
...     print(char)
...
3
2
1

9.10 Generator

-Generator ist ein übersichtliches und leistungsstarkes Tool zum Erstellen von Iteratoren.

>>> def reverse(data):
...     for index in range(len(data)-1, -1, -1):
...         yield data[index]
...
>>> for char in reverse('golf'):
...     print(char)
...
f
l
o
g

9.11 Generatortyp

Für einen einfachen Generator gibt es eine einfache Möglichkeit, ihn mithilfe eines Ausdrucks zu codieren. Ein Ausdruck mit einer Syntax ähnlich der Listeneinbeziehung, jedoch mit Klammern anstelle von eckigen Klammern.

>>> sum(i*i for i in range(10))
285

Kapitel 10 Besichtigung der Standardbibliothek (4 Fragen, 10,00%)

10.1. Betriebssystemschnittstelle

OS-Modul ・ ・ ・ Betriebssystembezogen

>>> import os
>>> os.getcwd()
'/root/sample/test'
>>> os.chdir('/root')
>>> os.system('mkdir today')
0

Verwenden Sie das Import-OS-Format anstelle von OS-Import *

>>> import os
>>> dir(os)
>>> help(os)

Shutil-Modul: Eine übergeordnete Schnittstelle, die für die tägliche Verwaltung von Dateien und Verzeichnissen einfacher zu verwenden ist.

>>> import shutil
>>> shutil.copyfile('data.db', 'archive.db')
'archive.db'
>>> shutil.move('/build/executables', 'installdir')
'installdir'

10.2 Platzhalter für Dateien

glob-Modul ・ ・ ・ Ruft den Dateipfadnamen ab, der dem im Argument angegebenen Muster entspricht

>>> import glob
>>> glob.glob('*.py')
>>> glob.glob('*')   #Geben Sie alle Dateinamen im Verzeichnis aus

10.3. Befehlszeilenargumente

>>> import sys
>>> print(sys.argv)
['demo.py', 'one', 'two', 'three']

10.4 Fehlerausgabe umleiten und Programm beenden

Das sys-Modul verfügt auch über Attribute für stdin, stdout und stderr

10.5 String Pattern Matching

Das Modul re bietet reguläre Ausdrücke für eine erweiterte Zeichenfolgenverarbeitung

10.6 Mathematik

Das Mathematikmodul bietet eine Möglichkeit, auf Funktionen der C-Sprachbibliothek für Gleitkomma-Arithmetik zuzugreifen

>>> import math
>>> math.cos(math.pi / 4)
0.7071067811865476
>>> math.log(1024, 2)  # log(x[, base]):x(Mit e als Boden)Natürlicher Logarithmus
10.0
>>> math.sqrt(2)    #Holen Sie sich Quadratwurzel
1.4142135623730951

Das Zufallsmodul bietet ein Werkzeug zur Elementauswahl basierend auf Zufallszahlen

>>> import random
>>> random.choice(['apple','pear','banana'])
'pear'
>>> random.sample(range(100), 10)
[6, 49, 57, 72, 31, 25, 35, 90, 30, 76]
>>> random.random()
0.7892340475238878
>>> random.randrange(6)
5

Das Statistikmodul berechnet die grundlegenden statistischen Merkmale numerischer Daten (Mittelwert, Median, Varianz usw.).

SciPy Project bietet viele Module für die numerische Verarbeitung

10.7. Zugang zum Internet

Die beiden einfachsten Module sind urllib.request, um Daten von einer URL abzurufen, und smtplib, um eine E-Mail zu senden.

10.8 Datum und Uhrzeit

Das Datum / Uhrzeit-Modul bietet Klassen zum einfachen und komplexen Bearbeiten von Datum und Uhrzeit.

>>> from datetime import date
>>> now = date.today()
>>> now
datetime.date(2020, 1, 3)
>>> now.strftime("%m-%d-%y. %d %b %Y is a %A on the %d day of %B.")
'01-03-20. 03 Jan 2020 is a Friday on the 03 day of January.'
>>> birthday = date(1964, 7, 31)
>>> age = now - birthday
>>> age.days
20244

10.9 Datenkomprimierung

Module: zlib, gzip, bz2, lzma, zipfile, tarfile

>>> import zlib
>>> s = b'witch which has which witches wrist watch'
>>> len(s)
41
>>> t = zlib.compress(s)
>>> len(t)
37
>>> zlib.decompress(t)
b'witch which has which witches wrist watch'
>>> zlib.crc32(s)
226805979

10.10. Leistungsmessung

timeit Modul

>>> from timeit import Timer
>>> Timer('t=a; a=b; b=t', 'a=1; b=2').timeit()
0.025199586991220713
>>> Timer('a,b = b,a', 'a=1; b=2').timeit()
0.022948098019696772

10.11 Qualitätskontrolle

Das doctest-Modul bietet Tools zum Suchen nach Modulen und Auswerten von Tests, die in die Dokumentzeichenfolge des Programms eingebettet sind.

10.12. Batterie enthalten

Batterie enthalten: Eine Bibliothek und eine integrierte Umgebung, die vom Programmierer sofort verwendet werden können, werden im Voraus vorbereitet. Module xmlrpc.client und xmlrpc.server E-Mail-Paket JSON-Paket SQLite3-Modul gettext, locale, codecs package

Kapitel 11 Standard Library Tour-Teil II (1 Frage, 2,50%)

11.1. Ausgangsformung

-Reprlib-Modul: Begrenzt die Ausgabelänge, kann geändert werden, der Standardwert ist jedoch 6 Elemente

reprlib.Repr und Repr.


>>> reprlib.repr('1111122222333334444455555666667777788888')
"'111112222233...6667777788888'"               #Unterwegs weggelassen
>>> repr('1111122222333334444455555666667777788888')
"'1111122222333334444455555666667777788888'"         #(Vergleich)Ergebnis der Repr

reprlib.Repr und Repr:Kombiniert mit Set Set.


>>> reprlib.repr(set('1111122222333334444455555666667777788888'))
"{'1', '2', '3', '4', '5', '6', ...}"            #Machen Sie es einzigartig, indem Sie das Set-Set verwenden und die Rückseite weglassen
>>> repr(set('1111122222333334444455555666667777788888'))
"{'5', '3', '8', '2', '6', '1', '4', '7'}"         #(Vergleich)Ergebnis der Repr
>>> reprlib.repr({'d', 'e', 't', 'c', 'n', 'o', 'v', 'i'})
"{'c', 'd', 'e', 'i', 'n', 'o', ...}"

-Druckmodul -Textwrap-Modul: Passt den aus Absätzen bestehenden Text so an, dass er genau in die angegebene Bildschirmbreite passt. ・ Lokales Modul

11.2. Vorlage

Das Zeichenfolgenmodul enthält die Template-Klasse, die flexibel ist und eine einfache Syntax hat, die Endbenutzer leicht bearbeiten können.

>>> from string import Template
>>> t = Template('${village}folk send $$10 to $cause.')
>>> t.substitute(village='Nottingham', cause='the ditch fund')
'Nottinghamfolk send $10 to the ditch fund.'

Die Methode replace () löst einen KeyError aus, wenn das Wörterbuch oder das Schlüsselwortargument kein Platzhalteräquivalent enthält.

11.3. Verarbeitung von Binärdatensätzen

Strukturmodul ・ ・ ・ Bietet Funktionen wie pack () und unpack (), mit denen binäre Datensatzformate unterschiedlicher Länge ausgeführt werden.

>>> import struct
>>> kind, value = struct.unpack("BxH", data)
>>> data
b'd\x00\xb0\x04'

11.4. Multithreaded

Threading ist eine Technik zum Aufteilen mehrerer Aufgaben, die nicht in der Reihenfolge ihrer Abhängigkeit angeordnet sind. Das schwierigste Problem beim Erstellen einer Multithread-Anwendung ist die Koordination zwischen Threads, die Daten und Ressourcen gemeinsam nutzen.

11.5 Protokollierung

Das Protokollierungsmodul bietet ein flexibles Protokollierungssystem mit vielen Funktionen.

>>> import logging
>>> logging.debug('Debugging information')
>>> logging.info('Informational message')
>>> logging.warning('Warning:config file %s not found', 'server.conf')
WARNING:root:Warning:config file server.conf not found
>>> logging.error('Error occurred')
ERROR:root:Error occurred
>>> logging.critical('Critical error -- shutting down')
CRITICAL:root:Critical error -- shutting down

Standardmäßig wird die Ausgabe von info () und debug () unterdrückt und die Ausgabe an Standardfehler gesendet

11.6 Schwache Referenz

Python verwaltet den Speicher automatisch (die meisten Objekte werden durch Referenzzählung verwaltet, und die Garbage Collection entfernt Zirkelverweise). Der Speicher wird kurz nach dem letzten Verweis auf das Objekt freigegeben.

11.7. Tools zur Listenmanipulation

11.8. Dezimaler Floating-Fraction-Betrieb

Das Dezimalmodul bietet Dezimaldatentypen, die arithmetische Operationen mit schwebenden Dezimalbrüchen unterstützen.

Da die Dezimalklasse exakte Werte darstellen kann, können auch Restwerte und Gleichheitstests berechnet werden, die mit binären Gleitkommazahlen nicht wie erwartet berechnet werden können. Dezimalmodul ・ ・ ・ Arithmetische Berechnung mit der erforderlichen Genauigkeit

Kapitel 12 Virtuelle Umgebung und Paket (1 Frage, 2,50%)

12.1. Einführung

12.2. Erstellen einer virtuellen Umgebung

pyvenv tutorial-env Erstellen Sie das Verzeichnis tutorial-env, falls es nicht vorhanden ist, und erstellen Sie darin ein Unterverzeichnis, das den Python-Interpreter, Standardbibliotheken und andere verwandte Dateien enthält.

12.3. Paketverwaltung mit pip

pip search astronomy pip install novas pip install requests==2.6.0 pip install --upgrade requests pip show requests pip list pip freeze > requirements.txt pip install -r requirements.txt pip uninstall request

Kapitel 13 Wie geht es weiter? (0 Fragen, 0,00%)

Lernen nach dem Erlernen des Tutorials und verschiedener Links

Kapitel 14 Bearbeiten von Eingabezeilen und Ersetzen des Verlaufs in einer interaktiven Umgebung (1 Frage, 2,50%)

14.1 Tab-Vervollständigung und Verlaufsbearbeitung

14.2. Alternative zu interaktiven Dolmetschern

IPython bpython

Kapitel 15 Float-Berechnung: Probleme und Grenzen (Nicht anwendbar, da der Testbereich nicht beschrieben wird)

Gleitkommazahlen werden in der Computerhardware als (binäre) Brüche mit einer Basis von 2 dargestellt.

15.1. Darstellungsfehler

Der Darstellungsfehler hängt mit der Tatsache zusammen, dass einige (tatsächlich die meisten) Dezimalbrüche nicht als binäre (Basis 2) Brüche dargestellt werden können.

>>> from decimal import Decimal
>>> from fractions import Fraction
>>> Fraction.from_float(0.1)
Fraction(3602879701896397, 36028797018963968)
>>> (0.1).as_integer_ratio()
(3602879701896397, 36028797018963968)
>>> Decimal.from_float(0.1)
Decimal('0.1000000000000000055511151231257827021181583404541015625')
>>> format(Decimal.from_float(0.1), '.17')
'0.10000000000000001'

Recommended Posts

[Qualifikation] Ich habe versucht, Python von Grund auf zu lernen, um die Grundprüfung für die Python3-Ingenieurzertifizierung (Studienausgabe) abzulegen.
*
Nehmen Sie an der Python3 Engineer-Zertifizierungsgrundprüfung teil
Bestehen und Studieren der Python 3 Engineer-Zertifizierungsgrundprüfung
Ich habe die Zertifizierungsprüfung für Python-Ingenieure bestanden und die Lernmethode freigegeben
Grundprüfung für die Python3-Ingenieurzertifizierung - Ich habe versucht, die Scheinprüfung zu lösen -
Ist die Grundprüfung für die Python 3 Engineer-Zertifizierung wirklich einfach?
So studieren Sie die Grundprüfung zur Python 3-Ingenieurzertifizierung durch Python-Anfänger (bestanden im August 2020)
Eindrücke von der Python 3 Engineer Certification Basic-Prüfung
Ein Memorandum zum Erwerb der Grundprüfung für die Python3-Ingenieurzertifizierung
Programmieranfänger Python3 Ingenieur Zertifizierung Grundprüfungsprotokoll
Die Python Engineer-Zertifizierungsdatenanalyseprüfung bestanden haben
Ich wollte die Python-Bibliothek von MATLAB verwenden
(Möglicherweise) Python 3 Engineer-Zertifizierungsdatenanalyse-Test, den Sie selbst bestehen können
Ich habe versucht, das Python-Skript unter Windows 10 von 2.7.11 auf 3.6.0 zu ändern
Ich habe versucht, die Anfängerausgabe des Ameisenbuchs mit Python zu lösen
Ich konnte den Thermodrucker "PAPERANG" aus Python (Windows10, Python3.6) drucken.
[Data Science-Grundlagen] Ich habe versucht, mit Python von CSV auf MySQL zu speichern
Ich habe Python 3.5.1 installiert, um maschinelles Lernen zu studieren
Ich möchte ein Glas aus Python verwenden
Ich kannte die Grundlagen von Python nicht
[Python] Ich habe die grundlegende Grammatik persönlich zusammengefasst.
[IBM Cloud] Ich habe versucht, über Cloud Funtions (Python) auf die Tabelle Db2 on Cloud zuzugreifen.
Ich suchte nach den Fähigkeiten, die erforderlich sind, um Webingenieur bei Python zu werden
[Python] Ich habe versucht, den Typnamen als Zeichenfolge aus der Typfunktion abzurufen
Ich habe versucht, den G-Test und die E-Qualifikation durch Training ab 50 zu bestehen
Ich habe versucht, Python-Code aus .Net mit Pythonnet auszuführen (Hallo World Edition)
Studie aus Python Hour7: Verwendung von Klassen
Python3 Engineer Certification Grundlegende Prüfungsnotizen und Problemtrends
Ich möchte mit Python eine E-Mail von Google Mail senden.
[Python] Ich möchte 7DaysToDie von Discord aus verwalten! 1/3
Python 3 Engineer Zertifizierungsdatenanalyse Prüfung Pre-Exam Learning
Ich möchte Ceres Solver aus Python verwenden
Was ich beim Update von Python 2.6 auf 2.7 gemacht habe
[Python] Ich möchte 7DaysToDie von Discord aus verwalten! 2/3
Ich möchte C ++ - Code aus Python-Code erstellen!
[Python] Ich werde FTP auf den FTP-Server hochladen.
Ich möchte den Fortschritt in Python anzeigen!
[Python] Ich habe ein System erstellt, um "das Rezept, das ich wirklich will" von der Rezeptseite einzuführen!
Woran ich in der Aufnahmeprüfungsfrage "Bayes Statistics from the Basics" gedacht habe
Ich habe die Python-Version von 2 auf 3 erhöht, aber jedes Mal, wenn ich das Ubuntu-Terminal neu starte, bleibt die Version 2.