Python II

  1. Wiederholung: die wichtigsten Funktion
  2. Viel mächtigere Funktion: Modules und Libraries
  3. Schauen wir uns diese simplen Funktionen genauer an
  4. Bauen wir die eigenen Funktionen
  5. Struktur und Troubleshooting

1 Wichtigste Funktionen

Eine Übersicht der 64 wichtigsten simplen Python-Funktionen sind hier gelistet.


In [2]:
lst = [11,2,34,4,5,5111]

In [3]:
len([11,2,'sort',4,5,5111])#zählt die Elemente einer Liste


Out[3]:
6

In [4]:
sorted(lst)


Out[4]:
[2, 4, 5, 11, 34, 5111]

In [5]:
lst.sort()

In [6]:
min(lst)


Out[6]:
2

In [7]:
max(lst)


Out[7]:
5111

In [8]:
str(1212)


Out[8]:
'1212'

In [9]:
sum([1,2,2])


Out[9]:
5

In [10]:
lst.remove(4)

In [11]:
lst.append(4)

In [12]:
string = 'hello, wie geht Dir?'

In [13]:
string.split(',')


Out[13]:
['hello', ' wie geht Dir?']

2 Viel mächtigere Funktion: Modules und Libraries

Modules & Libraries


In [19]:
import urllib 
import requests
import glob
import pandas
import BeautifulSoup
import re
#etc. etc.


---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-19-abbd7b42d4a4> in <module>()
      2 import requests
      3 import glob
----> 4 import pandas
      5 import BeautifulSoup
      6 import re

ModuleNotFoundError: No module named 'pandas'

In [ ]:
!pip install requests

In [ ]:
!pip install glob

3 Aber wie sind Funktion, Modules und Libraries aufgebaut?


In [ ]:
import os

In [ ]:
#Funktioniert leider nicht mit allen Built in Functionen
os.path.split??

In [ ]:
#Beispiel Sort
def sort(list):
    for index in range(1,len(list)):
        value = list[index]
        i = index-1
        while i>=0:
            if value < list[i]:
                list[i+1] = list[i]
                list[i] = value
                i -= 1
            else:
                break
    return list

In [ ]:
#Ganz komplexe. Wenn Du nicht mit dem Modul urllib, bzw. urlretrieve 
#arbeiten könntest, müsstest Du jetzt all das eintippen.

def urlretrieve(url, filename=None, reporthook=None, data=None):
    url_type, path = splittype(url)

    with contextlib.closing(urlopen(url, data)) as fp:
        headers = fp.info()

        # Just return the local path and the "headers" for file://
        # URLs. No sense in performing a copy unless requested.
        if url_type == "file" and not filename:
            return os.path.normpath(path), headers

        # Handle temporary file setup.
        if filename:
            tfp = open(filename, 'wb')
        else:
            tfp = tempfile.NamedTemporaryFile(delete=False)
            filename = tfp.name
            _url_tempfiles.append(filename)

        with tfp:
            result = filename, headers
            bs = 1024*8
            size = -1
            read = 0
            blocknum = 0
            if "content-length" in headers:
                size = int(headers["Content-Length"])

            if reporthook:
                reporthook(blocknum, bs, size)

            while True:
                block = fp.read(bs)
                if not block:
                    break
                read += len(block)
                tfp.write(block)
                blocknum += 1
                if reporthook:
                    reporthook(blocknum, bs, size)

    if size >= 0 and read < size:
        raise ContentTooShortError(
            "retrieval incomplete: got only %i out of %i bytes"
            % (read, size), result)

    return result

4 Bauen wir die eigenen Funktion

Bauen wir ganze Sätze, aus Listen von Strings


In [3]:
lst = ['ich', 'habe', 'ganz', 'kalt']

In [4]:
def join(mylist):# ich definiere eine Funktion mit Name join(Variable)
    long_str = ''# ich definiere einen leeren String
    for elem in mylist:
        long_str = long_str + ' ' + elem
    return long_str.strip()#strip schneidet leerstellen hinten und vorne ab. return generiert erst den output

Und zum aufrufen packe ich meine List in Klammen ()


In [5]:
join(lst)


Out[5]:
'ich habe ganz kalt'

Bauen wir eine simple Suche


In [21]:
satz = "Die Unabhängigkeit der Notenbanken von der Politik gilt bisher als anerkannter Grundpfeiler der modernen Wirtschafts- und Geldpolitik in fortgeschrittenen Volkswirtschaften. Zu gross wäre sonst das Risiko, dass gewählte Politiker die Notenpresse anwerfen, wenn es ihren persönlichen Zielen gerade gelegen kommt, und dass dadurch die Stabilität des Geldes und das Vertrauen in das Zahlungsmittel untergraben wird."

In [22]:
def find(string):
    elem = input('Bitte geben Sie den Suchbegriff ein: ')
    if elem in string:
        return 'Treffer'
    else:
        return 'Kein Treffer'

In [23]:
find(satz)


Bitte geben Sie den Suchbegriff ein: Politik
Out[23]:
'Treffer'

 5 Struktur und Troubleshooting

  • Zuerst die Imports
  • Dann die eigenen Funktionen
  • Nun der eigentliche Code

In [ ]:
print('Immer im Code verwenden, um zu wissen wo der Fehler nun ganz genau passiert.')

In [ ]:
#Beispiel Sort
def sort(list):
    for index in range(1,len(list)):
        value = list[index]
        print(value)
        i = index-1
        print(i)
        while i>=0:
            if value < list[i]:
                list[i+1] = list[i]
                list[i] = value
                i -= 1
            else:
                break
    return list

In [ ]:
sort(lst)

In [ ]:
lst

In [ ]: