Einleitung

Die Einrückung ist wichtig:

[1]:
i = 41
if i < 42:
    print('ja, das ist kleiner')
    print('basta')
ja, das ist kleiner
basta

Datatypes

Numbers

Integer Numbers

[2]:
i = 1234
[3]:
print(i)
1234
[4]:
i
[4]:
1234

Decimal

[5]:
1234
[5]:
1234
[6]:
1*10**3+2*10**2+3*10**1+4*10**0
[6]:
1234

Hexadecimal (Basis 16)

[7]:
0x1234
[7]:
4660
[8]:
1*16**3+2*16**2+3*16**1+4*16**0
[8]:
4660

Binär (Basis 2)

[9]:
0b100110
[9]:
38
[10]:
1*2**5 + 0*2**4 + 0*2**3 + 1*2**2 + 1*2**1 + 0*2**0
[10]:
38

Integer Numbers: Arithmetic

[11]:
3/2
[11]:
1.5

Man will Python 2 behaviour erzwingen: 3/2 == 1 -> Floor division

[12]:
3//2
[12]:
1

Module: Restklassen, Rest der Division

[13]:
3%2
[13]:
1
[14]:
3%1
[14]:
0
[15]:
9%5
[15]:
4

Operator Precedence

[16]:
4 * 2 + 1
[16]:
9

IMplizite Klammerung durch Präzedenz

[17]:
(4 * 2) + 1
[17]:
9
[18]:
4 * (2 + 1)
[18]:
12
[19]:
4 * 2 / 3
[19]:
2.6666666666666665

Frage: warum 6665 und nicht 6667 -> IEEE Floatingpoint Representaion

[20]:
2/3 == 4/6
[20]:
True

Floatingpoint Zahlen nicht mit == vergleichen!

[21]:
abs(2/3 - 4/6) < 0.0001
[21]:
True

Integers sind aber unendlich lang (in Python)

[22]:
10**6
[22]:
1000000
[23]:
2**32 - 1
[23]:
4294967295
[24]:
2**64 - 1
[24]:
18446744073709551615

Overflow, wenn nicht Python verwendet wird. Der Wert wäre dort 0!!!

[25]:
2**64  # overflow, but not in Python
[25]:
18446744073709551616
[26]:
2**1000
[26]:
10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
[27]:
2**10000
[27]:
19950631168807583848837421626835850838234968318861924548520089498529438830221946631919961684036194597899331129423209124271556491349413781117593785932096323957855730046793794526765246551266059895520550086918193311542508608460618104685509074866089624888090489894838009253941633257850621568309473902556912388065225096643874441046759871626985453222868538161694315775629640762836880760732228535091641476183956381458969463899410840960536267821064621427333394036525565649530603142680234969400335934316651459297773279665775606172582031407994198179607378245683762280037302885487251900834464581454650557929601414833921615734588139257095379769119277800826957735674444123062018757836325502728323789270710373802866393031428133241401624195671690574061419654342324638801248856147305207431992259611796250130992860241708340807605932320161268492288496255841312844061536738951487114256315111089745514203313820202931640957596464756010405845841566072044962867016515061920631004186422275908670900574606417856951911456055068251250406007519842261898059237118054444788072906395242548339221982707404473162376760846613033778706039803413197133493654622700563169937455508241780972810983291314403571877524768509857276937926433221599399876886660808368837838027643282775172273657572744784112294389733810861607423253291974813120197604178281965697475898164531258434135959862784130128185406283476649088690521047580882615823961985770122407044330583075869039319604603404973156583208672105913300903752823415539745394397715257455290510212310947321610753474825740775273986348298498340756937955646638621874569499279016572103701364433135817214311791398222983845847334440270964182851005072927748364550578634501100852987812389473928699540834346158807043959118985815145779177143619698728131459483783202081474982171858011389071228250905826817436220577475921417653715687725614904582904992461028630081535583308130101987675856234343538955409175623400844887526162643568648833519463720377293240094456246923254350400678027273837755376406726898636241037491410966718557050759098100246789880178271925953381282421954028302759408448955014676668389697996886241636313376393903373455801407636741877711055384225739499110186468219696581651485130494222369947714763069155468217682876200362777257723781365331611196811280792669481887201298643660768551639860534602297871557517947385246369446923087894265948217008051120322365496288169035739121368338393591756418733850510970271613915439590991598154654417336311656936031122249937969999226781732358023111862644575299135758175008199839236284615249881088960232244362173771618086357015468484058622329792853875623486556440536962622018963571028812361567512543338303270029097668650568557157505516727518899194129711337690149916181315171544007728650573189557450920330185304847113818315407324053319038462084036421763703911550639789000742853672196280903477974533320468368795868580237952218629120080742819551317948157624448298518461509704888027274721574688131594750409732115080498190455803416826949787141316063210686391511681774304792596709376

Strings

[28]:
'hallo'
[28]:
'hallo'
[29]:
"hallo"
[29]:
'hallo'
[30]:
'das ist ein eingebettetes "'
[30]:
'das ist ein eingebettetes "'
[31]:
'das ist ein eingenbettetes \''
[31]:
"das ist ein eingenbettetes '"
[32]:
"das ist eine eingebettetes '"
[32]:
"das ist eine eingebettetes '"
[33]:
"das ist eine eingebettetes \""
[33]:
'das ist eine eingebettetes "'
[34]:
'mississippi'.count('ss')
[34]:
2
[35]:
'mississippi'.find('ss')
[35]:
2
[36]:
'mississippi'.find('ss', 3)
[36]:
5
[37]:
'mississippi'.capitalize()
[37]:
'Mississippi'
[38]:
print('eine zeile\nnoch eine zeile')
eine zeile
noch eine zeile
[39]:
print("C:\some\name\of\a\directory")
C:\some
ame\of\directory
[40]:
print("C:\some\\name\of\a\directory")
C:\some\name\of\directory
[41]:
print(r"C:\some\name\of\a\directory")
C:\some\name\of\a\directory

Multiline Strings

[42]:
print("""eine zeile
noch eine zeile
jetzt ist schluss""")
eine zeile
noch eine zeile
jetzt ist schluss

Compound Datatypes

Lists (Array in JavaScript, std::vector<> in C++, Array in Java)

[43]:
l = [1, 'eins', 1.0]
[44]:
l
[44]:
[1, 'eins', 1.0]

In Java (und C++ und C#, nicht aber in JavaScript) geht das nicht.

[45]:
l[0]
[45]:
1
[46]:
l[1]
[46]:
'eins'
[47]:
try:
    l[3]
except Exception as e:
    print(e)
list index out of range
[48]:
l.append('one')
[49]:
l
[49]:
[1, 'eins', 1.0, 'one']
[50]:
l.extend([1, 2, 3, 4])
l
[50]:
[1, 'eins', 1.0, 'one', 1, 2, 3, 4]

Slice: [inclusive:exclusive]

[51]:
l[2:5]
[51]:
[1.0, 'one', 1]

Löschen

[52]:
del l[3]
[53]:
l
[53]:
[1, 'eins', 1.0, 1, 2, 3, 4]

Iteration (in Python mittels for)

[54]:
for element in l:
    print(element)
1
eins
1.0
1
2
3
4
[55]:
def is_integer(elem):
    if type(elem) is int:
        return True
    else:
        return False
[56]:
for x in filter(is_integer, l):
    print(x)
1
1
2
3
4

Dictionary (Key/Value Map in Javascript)

[57]:
mapping = {
    'zero': 0,
    'one': 1,
    'two': 2,
}
[58]:
mapping['one']
[58]:
1
[59]:
mapping['three'] = 3
[60]:
mapping
[60]:
{'zero': 0, 'one': 1, 'two': 2, 'three': 3}
[61]:
del mapping['one']
[62]:
mapping
[62]:
{'zero': 0, 'two': 2, 'three': 3}
[63]:
for k in mapping.keys():
    print(k)
zero
two
three
[64]:
for v in mapping.values():
    print(v)
0
2
3
[65]:
for k, v in mapping.items():
    print(k, v)
zero 0
two 2
three 3

Set: mathematische Mengen

[66]:
s = {'rot', 'gruen', 'blau'}
[67]:
'rot' in s
[67]:
True
[69]:
'schwarz' in s
[69]:
False
[70]:
s.add('schwarz')
[71]:
'schwarz' in s
[71]:
True
[72]:
s.remove('rot')
[73]:
'rot' in s
[73]:
False
[74]:
for element in s:
    print(element)
schwarz
gruen
blau

while

[75]:
sum = 0
i = 1
while i <= 100:
    sum += i
    i += 1

print(sum)
5050

Functions

Bestimmen des Maximums von zwei Zahlen … inline ohne Funktion

[1]:
a = 666
b = 42
[2]:
if a < b:
    maximum = b
else:
    maximum = a
[3]:
print(maximum)
666
[4]:
var1 = 17
var2 = 6712
[5]:
if var1 < var2:
    maximum = var1
else:
    maximum = var2
[6]:
print(maximum)
17

Das isn Fehler!

[13]:
def maximum(links, rechts):
    if links < rechts:
        return rechts
    else:
        return links
[14]:
maximum(1, 2)
[14]:
2
[15]:
maximum(666, 42)
[15]:
666