Show Menu
Cheatography

Python 3 Cheat Sheet (DRAFT) by

Python 3 Überblick für die Tutorien im Rahmen Dynamik komplexer Systeme

This is a draft cheat sheet. It is a work in progress and is not finished yet.

Basisd­ate­ntypen

Integer
int()
2,0,3,-2
Float
float()
2.307, 0.0, -2.34567
String
str()
'Hallo ich bin ein String'
Boolean
bool()
True, False

numerische Operat­ionen

5+1
>>6
Addition
5-1
>>4
Subtra­ktion
3/5
>>.6
Division
3//5
>>0
Floor Division
3%5
>>3
Modulo
3*5
>>15
Multip­lik­ation
3**3
>>27
Potenz

sequen­tielle Datentypen

Liste
list()
[1,2,3­,5,­-6,9]
Tupel
tuple()
(1,2,8)
Dictionary
dict()
{'Hall­o':­'he­llo­','­Fün­f':5}
String
str()
'Hallo ich bin ein String'

Überpr­üfe­n/ä­ndern des Datentypes

x=5
type(x)
>>int
float(x)
>>5.0
str(x)
>>'5'
bool(x)
>>True

Operat­ionen auf Strings

s='hallo du!'
s.repl­ace­('h­','H')
>>'­Hallo du!'
substr­ing­s=s.sp­lit[' ']
substr­ing­s=[­'ha­llo­','du']
s.lower()
>>'­hallo du!'
s.upper()
>>'­HALLO DU!'

indizi­erung sequen­tieller Datentypen

x=[1,3­,5,­7,-2]
x[0]
>>1
 
x[-1]
>>-2
 
x[:]
>>1­,3,­5,7,-2
 
x[2:3]
>>5
2 einges­chl­ossen, 3 ausges­chl­ossen
 
x[::2]
>>1­,5,-2
jedes 2. Element
 
x[::-1]
-2,7,5,3,1
rückwärts
 
x[2:]
5,7,-2
alles ab dem 2. Element
 
x[:2]
1,3
alles bis zum 2. Element (2. Element nicht einges­chl­ossen)
Die Indizi­erung sequen­tieller Datentypen beginnt in Python, wie auch in vielen anderen Progra­mmi­ers­prachen mit der 0. Hier müssen Matlab Nutzer aufpas­sen!!!

Operat­ionen für sequen­zielle Datentypen

x=[2,1­,3,4,2]
2 in x
>>True
x.count(2)
>>2
x.index(2)
>>0
x.remo­ve(2)
>>[­1,3,4]
x.sort()
>>[­1,2­,2,3,4]
x.appe­nd(1)
>>[­2,1­,3,­4,2,1]
x+=1
>>[­2,1­,3,­4,2,1]
x*=2
>>[­2,1­,3,­4,2­,2,­1,3­,4,2]
x = [i*2 for i in x if i != 0 ]
jedes Element mit zwei multip­liz­ieren außer das Element ist 0

Variablen und Zuordn­ungen

x=1
x refere­nziert die Instanz 1
x,y,z=­1,2,3
x+=1
x=x+1
x-=1
x=x-1
x*=2
x=x*2
x/=2
x=x/2
x,y=y,x
Werte tauschen
x=y
x und y refere­nzieren die gleiche Instanz
x is y
überpr­üfen, ob x und y auf die gleiche instanz zeigen
global x
erstellen einer globalen Variable

built in functions

print(5)
Ausgabe
>>5
x=inpu­t('­Bitte geben Sie eine Zahl ein: ')
Eingabe
>>Bitte geben Sie eine Zahl ein: _
eval('­5+3')
Ausführen von Strings
>>8
enumer­ate­([1­,2,­3,4])
ermöglicht das iterieren über Liste und Indice bei for loops
...
...
...
Es erfolgt in Python standa­rdmäßig keine Ausgabe, eine Unterd­rückung mittels ';' ist hier also nicht üblich. Um eine Ausgabe zu erzielen, sollte auf die print() Funktion zurück­geg­riffen werden

if-Sta­tement

#if statement
#auf Einschübe achten
if x==3:
   print(x)
elif x>3:
   print('x ist größer als 3')
else:
   print('x ist zu klein')

#inline if
#auf Übersichtlichkeit achten!!!
if x==3:print(x)

for-Sc­hleife

# for loop
x=[1,2,3,5,6,1]
for n in x:
   print(n)

>>1
>>2
>>3
>>5
>>...

#erstellen, eines iterierbaren Objektes
x=range(3) #exclusiver Endpunkt
for l in x: print(x)
>>0
>>1
>>2
x=range(2,3) #Start und exclusiver Endpunkt
for l in x: print(x)
>>2
x=range(2,10,2) #Start,exclusiver Endpunkt und Schrittweite
for l in x: print(x)
>>2
>>4
>>6
>>8

#Liste überschreiben
x=[1,3,2,6]
for n in range(len(x)):
   x[n]=x**2 #jeder wert aus der Liste x wird mit seinem Quadrat überschrieben

While-­Sch­leife

x=0
while x<=10:
   print(x)
   x+=1

>>0
>>1
>>...
>>10

#Endlosschleife
while True:
   print('diese Schleife läuft solange, wie das Programm läuft oder die Schleife abgebrochen wird')

Abbruch von Schleifen

while True:
   break() # sorgt für Abbruch der Schleife

nested loops

x=5
while True:
   if x<=20:
      x+=1
   elif x==6:
      for z in range(x):
         if z<=3:
            print(x)
         else:
            break()
   else:
      break()

Strukt­ogramme

Oftmals helfen Strukt­ogramme bei der Planung von Funkti­onen. Im Bsp. eine nested Loop ohne jeden Sinn, sie dient lediglich der Darste­llung des Strukt­ogramms

Funktionen

def my_first_function(arg1):
   print(arg1)

my_first_function(3)

>>3

Arbeiten mit Dateien

#Einlesen von Dateien
f=open(Hallo.txt,'r') #öffnen des Textes
text=f.read() #liest den ganzen Text ein
f.close() #schließen des Textes

#zeilenweises Einlesen
f=open(Hallo.txt,'r') #öffnen des Textes
for line in f:
  x=f.readline()
  print(x) # ausgabe der Zeile
f.close() #schließen des Textes

#Zeilen- und Spaltenweises einlesen einer csv-Datei
'''
 Datei sieht z.B. wie folgt aus
1,4
2,3
1,9

'''

f=open(Bsp.csv,'r') #öffnen des Textes
spalte_1 = [ ]
spalte_2 = [ ]
for line in f:
   x = f.readline()
   spalte_1.append(int(x.split(',')[0]))
   spalte_2.append(int(x.split(',')[1]))
f.close()


#Dateien in eine Datei schreiben
#Fall1 Datei noch nicht vorhanden oder falls sie vorhanden ist soll sie überschreiben werden

f=open('fall1.txt','w') #mode 'w' für write
f.write('Hier steht später irgendwas')
f.close()

#Fall2 in einer Datei weiterschreiben oder erstellen, falls sie nicht vorhanden ist
f=open('fall2.txt','w') #mode 'a' für append
f.write('Hier steht später irgendwas')
f.close()
falls man sich nicht sicher ist sollte man auf write verzic­hten, da hier im schlim­msten Fall alle Daten der Datei verloren gehen!!!

Module

Import­ieren von Modulen

import math
Import­ieren des gesamten Math Modules
math.s­in(3)
Modulname muss genannt werden
from math import pi
Import­ieren einer einzelnen Funktion aus dem Math Modul
pi
nur Funkti­onsname muss genannt werden
from math import *
Import­ieren aller Bestan­dteile des Math Modules
sin(pi)
da nicht das Modul, sondern alle Einzel­bes­tan­dteile importiert worden sind, reicht es die Funkti­ons­namen anzugeben
import math as m
Import­ieren des Math Modules als m
m.sin(­m.pi)
das Modul wird al m benannt und wird auch so aufger­ufen, gleiches ist für Bestan­dteile von Funktionen möglich
Es sollte immer erkenn­tlich sein, welche Funktionen zu welchen Modulen gehören, daher sollte from ... import * nur dann genutzt werden, wenn erkenn­tlich ist, welche Funktionen zu diesem Modul gehören

Math

import math
math.s­in(), math.c­os(), math.tan()
Sinus, Cosinus, Tangens
math.a­sin(), math.a­cos(), math.a­tan()
Arcus Sinus, Cosinus, Tangens
math.e
e
math.l­og10()
10er Logari­thmus
math.log()
Logari­thmus
math.s­qrt()
Wurzel
math.pi
Pi
math.r­adi­ans()
umwandlung in Radialmaß
math.d­egree()
Umwandlung in Bogenmaß

Numpy

import numpy as np
x=np.a­rra­y([­[1,­23,­3],­[1]])
erstellen eines 2D-Arrays, der NumPy-­Array bietet als n-dime­nsi­onaler Array das Analogon zu einem Vektor in Matlab
x[:][0]
>>[1, 23, 3]
x[0][1]
>>23
x[:][:]
>> array([[1, 23, 3], [1]], dtype=­object)
np.app­end­(x[­0],­x[0])
array([ 1, 23, 3, 1, 23, 3])
np.pi
Pi
np.sqrt()
Wurzel
np.sin()
Sinus
...
...

matplotlib

import matplotlib as mpl
import mpl.pyplot as plt
fig=pl­t.f­igure()
erstellen einer Figure
ax=fig.gca()
Erstellen der Achsen, wobei gca für 'get current axis' steht
ax.set­_xl­abe­l('­X-A­chse')
Achsen­bes­chr­iftung (äquiv­alent für die Y-Achse)
ax.plo­t([­1,1­,2]­,[2­,1,3])
plotten von Punkte (verbunden zu Linie)
plt.ylim( (0, 110) )
Minimum und Maximum der Y-Achse festlegen analog für X-Acchse
ax.inv­ert­_ya­xis()
Invert­ieren der Y-Achse
ax.grid()
Gitter­muster erstellen
plt.show()
Anzeigen der Graphik

mayavi

from mayavi import mlab
figure = mlab.gcf()
Figure
mlab.m­esh(x, y, z)
mlab.p­lot3d()
plotet eine Linie mit gegebenen Koordi­naten X,Y,Z
mlab.s­how()
zeigen der aktuellen Figure
mlab.p­oin­ts3d()
mlab.s­urf()
mlab.i­mshow()
mlab.c­ont­our­_surf()
mlab.q­uiv­er3d()
mlab.f­low()

Bsp. Matplotlib 3d

import matplotlib as mpl
from mpl_to­olk­its.mp­lot3d import Axes3D
import numpy as np
import matplo­tli­b.p­yplot as plt
mpl.rc­Par­ams­['l­ege­nd.f­on­tsize'] = 10
fig = plt.fi­gure()
ax = fig.gc­a(p­roj­ect­ion­='3d')
theta = np.lin­spa­ce(-4 np.pi, 4 np.pi, 100)
z = np.lin­spa­ce(-2, 2, 100)
r = z**2 + 1
x = r * np.sin­(theta)
y = r * np.cos­(theta)
ax.plot(x, y, z, label=­'pa­ram­etric curve')
ax.leg­end()
ax.set­_xl­abel('X Label')
ax.set­_yl­abel('Y Label')
ax.set­_zl­abel('Z Label')
plt.show()

os

import os
os.lis­tdi­r(path)
liefert eine Liste mit allen Dateien in einem bestimmten Pfad
os.get­cwd()
liefert aktuelles Arbeit­sve­rze­ichnis
os.chd­ir(­path)
ändern des aktuellen Arbeit­sve­rze­ichnis (path ist ein String)

random

import random
x=[1,4­,5,­2,7,8]
random.sa­mpl­e(x,2)
>>[2,5]
Ziehen ohne zurück­legen
random.sh­uff­le(x)
>>[­8,7­,1,­4,5,2]
Mischen
random.ch­oice(x)
>>5
Zufall­sau­swahl
random.ra­ndi­nt(0,9)
>>3
Generiert einen Integer in dem Intervall [0,9]

time

import time
t=time.time()
Zeitpunkt
delta_­t=t­ime.time-t
vergangene Zeit in sec
time.s­trf­tim­e('%A %d %m %Y')
>>'­Sat­urday 14 10 2017'
time.s­lee­p(sec)
Pausieren für sec