mathematische Funktionen

a x² + b x + c

In [1]:
def f1(x):
    return 4*x**2+2*x+5
In [2]:
f1(0)
Out[2]:
5
In [3]:
def f2(x):
    ergebnis = 4*x**2+2*x+5
    return ergebnis
In [4]:
f2(1)
Out[4]:
11
In [5]:
def f(x,a=1,b=0,c=0):
    return a*x**2+b*x+c
In [6]:
def g(x):
    return f(x,4,2,5)
In [7]:
g(1)
Out[7]:
11
In [8]:
g(0)
Out[8]:
5
In [9]:
tabelle=[]
for x in range(-6,5):
    tabelle.append((x,f1(x)))
print(tabelle)
[(-6, 137), (-5, 95), (-4, 61), (-3, 35), (-2, 17), (-1, 7), (0, 5), (1, 11), (2, 25), (3, 47), (4, 77)]
In [10]:
from pygal import XY
from IPython.display import SVG
xy = XY()
xy.add('y=4*x**2+2*x+5', tabelle)
SVG(xy.render())
Out[10]:
Pygal101020203030404050506060707080809090100100110110120120130130-6-6-5-5-4-4-3-3-2-2-1-10011223344-6: 13711.39230769230770210.384615384615358-5: 9568.35384615384616175.59440559440554-4: 61125.3153846153846309.3356643356643-3: 35182.27692307692308411.60839160839157-2: 17239.23846153846154482.4125874125874-1: 7296.2521.74825174825170: 5353.16153846153844529.61538461538461: 11410.1230769230769506.0139860139862: 25467.0846153846153450.94405594405593: 47524.0461538461537364.405594405594344: 77581.0076923076922246.39860139860133y=4*x**2+2*x+5

Vektorrechnung

In [11]:
v = [1,2,3]
w = [8,4,2]

def vektoradd(a,b):
    ergebnis = [0,0,0]
    ergebnis[0] = a[0] + b[0]
    ergebnis[1] = a[1] + b[1]
    ergebnis[2] = a[2] + b[2]
    return ergebnis

print(vektoradd(v,w))
[9, 6, 5]
In [12]:
def vektoradd(a,b):
    ergebnis = [0] * len(a)
    for i in range(len(a)):
        ergebnis[i] = a[i]+b[i]
    return ergebnis

print(vektoradd(v,w))
[9, 6, 5]
In [13]:
x = [3,1,2,2,1]
y = [1,3,2,2,3]

print(vektoradd(x,y))
[4, 4, 4, 4, 4]
In [14]:
def vektormult(a,b):
    ergebnis = [0] * len(a)
    for i in range(len(a)):
        ergebnis[i] = a[i]*b
    return ergebnis

print(vektormult(v,3))
print(vektormult(w,5))
print(vektormult(x,2))
[3, 6, 9]
[40, 20, 10]
[6, 2, 4, 4, 2]

Matrizenmultiplikation

siehe Wikipedia

In [15]:
v = [[3,2,1],
     [1,0,2]]

w = [[1,2],
     [0,1],
     [4,0]]

def matrixmult(a,b):
    c = [[0 for x in range(len(b[0]))] for y in range(len(a))]
    for i in range(len(a)):
        for k in range(len(b[0])):
            for j in range(len(b)):
                c[i][k] = c[i][k] + a[i][j] * b[j][k]
    return c

print(matrixmult(v,w))
[[7, 8], [9, 2]]
In [16]:
x = [[1,3,2],
     [0,2,1],
     [0,0,3]]

y = [[2,0,0],
     [5,3,0],
     [8,6,4]]

print(matrixmult(x,y))
[[33, 21, 8], [18, 12, 4], [24, 18, 12]]

Textverarbeitung

In [17]:
def asciiChar(i):
    return "{:=03} | 0x{:03x} | {:6}\n".format(i,i,repr(chr(i)))

print(asciiChar(13))
013 | 0x00d | '\r'  

In [18]:
def asciiListe():
    s = ""
    for i in range(127):
        s += asciiChar(i)
    return s

print(asciiListe())
000 | 0x000 | '\x00'
001 | 0x001 | '\x01'
002 | 0x002 | '\x02'
003 | 0x003 | '\x03'
004 | 0x004 | '\x04'
005 | 0x005 | '\x05'
006 | 0x006 | '\x06'
007 | 0x007 | '\x07'
008 | 0x008 | '\x08'
009 | 0x009 | '\t'  
010 | 0x00a | '\n'  
011 | 0x00b | '\x0b'
012 | 0x00c | '\x0c'
013 | 0x00d | '\r'  
014 | 0x00e | '\x0e'
015 | 0x00f | '\x0f'
016 | 0x010 | '\x10'
017 | 0x011 | '\x11'
018 | 0x012 | '\x12'
019 | 0x013 | '\x13'
020 | 0x014 | '\x14'
021 | 0x015 | '\x15'
022 | 0x016 | '\x16'
023 | 0x017 | '\x17'
024 | 0x018 | '\x18'
025 | 0x019 | '\x19'
026 | 0x01a | '\x1a'
027 | 0x01b | '\x1b'
028 | 0x01c | '\x1c'
029 | 0x01d | '\x1d'
030 | 0x01e | '\x1e'
031 | 0x01f | '\x1f'
032 | 0x020 | ' '   
033 | 0x021 | '!'   
034 | 0x022 | '"'   
035 | 0x023 | '#'   
036 | 0x024 | '$'   
037 | 0x025 | '%'   
038 | 0x026 | '&'   
039 | 0x027 | "'"   
040 | 0x028 | '('   
041 | 0x029 | ')'   
042 | 0x02a | '*'   
043 | 0x02b | '+'   
044 | 0x02c | ','   
045 | 0x02d | '-'   
046 | 0x02e | '.'   
047 | 0x02f | '/'   
048 | 0x030 | '0'   
049 | 0x031 | '1'   
050 | 0x032 | '2'   
051 | 0x033 | '3'   
052 | 0x034 | '4'   
053 | 0x035 | '5'   
054 | 0x036 | '6'   
055 | 0x037 | '7'   
056 | 0x038 | '8'   
057 | 0x039 | '9'   
058 | 0x03a | ':'   
059 | 0x03b | ';'   
060 | 0x03c | '<'   
061 | 0x03d | '='   
062 | 0x03e | '>'   
063 | 0x03f | '?'   
064 | 0x040 | '@'   
065 | 0x041 | 'A'   
066 | 0x042 | 'B'   
067 | 0x043 | 'C'   
068 | 0x044 | 'D'   
069 | 0x045 | 'E'   
070 | 0x046 | 'F'   
071 | 0x047 | 'G'   
072 | 0x048 | 'H'   
073 | 0x049 | 'I'   
074 | 0x04a | 'J'   
075 | 0x04b | 'K'   
076 | 0x04c | 'L'   
077 | 0x04d | 'M'   
078 | 0x04e | 'N'   
079 | 0x04f | 'O'   
080 | 0x050 | 'P'   
081 | 0x051 | 'Q'   
082 | 0x052 | 'R'   
083 | 0x053 | 'S'   
084 | 0x054 | 'T'   
085 | 0x055 | 'U'   
086 | 0x056 | 'V'   
087 | 0x057 | 'W'   
088 | 0x058 | 'X'   
089 | 0x059 | 'Y'   
090 | 0x05a | 'Z'   
091 | 0x05b | '['   
092 | 0x05c | '\\'  
093 | 0x05d | ']'   
094 | 0x05e | '^'   
095 | 0x05f | '_'   
096 | 0x060 | '`'   
097 | 0x061 | 'a'   
098 | 0x062 | 'b'   
099 | 0x063 | 'c'   
100 | 0x064 | 'd'   
101 | 0x065 | 'e'   
102 | 0x066 | 'f'   
103 | 0x067 | 'g'   
104 | 0x068 | 'h'   
105 | 0x069 | 'i'   
106 | 0x06a | 'j'   
107 | 0x06b | 'k'   
108 | 0x06c | 'l'   
109 | 0x06d | 'm'   
110 | 0x06e | 'n'   
111 | 0x06f | 'o'   
112 | 0x070 | 'p'   
113 | 0x071 | 'q'   
114 | 0x072 | 'r'   
115 | 0x073 | 's'   
116 | 0x074 | 't'   
117 | 0x075 | 'u'   
118 | 0x076 | 'v'   
119 | 0x077 | 'w'   
120 | 0x078 | 'x'   
121 | 0x079 | 'y'   
122 | 0x07a | 'z'   
123 | 0x07b | '{'   
124 | 0x07c | '|'   
125 | 0x07d | '}'   
126 | 0x07e | '~'   

Generelle Verwendung von Funktionen

wenn immer wieder mehrere Operationen (Zeilen von Code) ausgeführt werden, bei denen sich nur einige (wenige) Werte ändern.

Überlegen sie, warum eine Funktion testklasse sinnvoll ist, um zu überprüfen, ob ein Argument eine Instanz einer bestimmten Klasse ist.