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 [ ]:
lst = [11,2,34,4,5,5111]

In [1]:
len([11,2,'sort',4,5,5111])


Out[1]:
6

In [ ]:
sorted(lst)

In [ ]:
lst.sort()

In [ ]:
min(lst)

In [ ]:
max(lst)

In [ ]:
str(1212)

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

In [ ]:
lst.remove(4)

In [ ]:
lst.append(4)

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

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

2 Viel mächtigere Funktion: Modules und Libraries

Modules & Libraries


In [5]:
#diese Bausteine haben nette Programmierer für uns entwickelt.
import urllib 
import requests
import glob
import pandas
import BeautifulSoup
import re
#etc. etc.


---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-5-eff2abe44734> in <module>()
      3 import requests
      4 import glob
----> 5 import pandas
      6 import BeautifulSoup
      7 import re

ImportError: No module named 'pandas'

In [7]:
!pip install re


Collecting re
  Could not find a version that satisfies the requirement re (from versions: )
No matching distribution found for re

3 Aber wie sind Funktion, Modules und Libraries aufgebaut?


In [8]:
import os

In [9]:
#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 [10]:
lst = ['ich', 'habe', 'ganz', 'kalt']

In [13]:
def join(mylist):
#"join" und "mylist" sind von mir gewählte Namen.
    long_str = ''
    for elem in mylist:
        long_str = long_str + ' ' + elem
# die Anführungszeichen mit Leerschlag machen, dass es Abstände zwischen den Strings gibt, wenn diese zusammengeführt werden.
    return long_str.strip()
#".strip()" ist eine kleine Subfunktion, welche die Leerschläge am Anfang und Ende löscht.

Und zum aufrufen packe ich meine List in Klammen ()


In [14]:
join(lst)


Out[14]:
'ich habe ganz kalt'

Bauen wir eine simple Suche


In [15]:
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 [16]:
satz


Out[16]:
'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 [17]:
def find(string):
    elem = input('Bitte geben Sie den Suchbegriff ein: ')
    if elem in string:
        return 'Treffer'
    else:
        return 'Kein Treffer'

In [26]:
find(satz)


Bitte geben Sie den Suchbegriff ein:  der N
Out[26]:
'Treffer'

 5 Struktur und Troubleshooting

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

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


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 [ ]: