Python

Aus Flinkwiki
Wechseln zu: Navigation, Suche
Seitenübersicht
Zur Seite "Python: Turtle"
Zur Seite "Python: Tkinter"
Zur Seite "Python: pygame"
Zur Seite "Python: Module"

Allgemeines

Die Sprache wurde Anfang der 1990er Jahre von Guido van Rossum am Centrum Wiskunde & Informatica in Amsterdam entwickelt.

shebang

Bei Ausführung auf der Shell/Kommandozeile verweist ein "shebang" am Anfang des Skripts auf die Datei, die das Skript ausführen soll. In Linux (Ubuntu) ist dies z. B.

#! /usr/bin/python3

Gegebenenfalls muss das Skript vorher aufführbar gemacht werden:

chmod 0755 script.py

IDLE

IDLE ist die IDE des Python-Projekts.

IDLE personalisieren

> Options, Configure IDLE

Verhalten bei F5

Die Aufforderung zu speichern bei der Ausführung einer noch nicht gesicherten Datei abschalten:

  • Reiter General, At Start of Run (F5) > No Prompt

History in der IDLE-Shell aktivieren

  • Reiter Keys > history-next > Get New Keys for Selection, 'Up Arrow und Down Arrow auswählen und speichern.

Funktionen

Funktionsadresse in Variablen speichern

Die Speicheradresse einer Funktion kann man einer Variablen zuweisen.

def zaehleBis10():
    zahl = 1
    while zahl <= 10:
        print(zahl)
        zahl += 1

neueFunktion = zaehleBis10
neueFunktion()


Vorbelegte Parameter

Parameter können vorbelegt und gegebenenfalls beim Funktionsaufruf geändert werden.

def aufsummieren(a = 10):
    summe = 0
    for i in range(1,a + 1,1):
        summe += i
    print(summe)
    return summe

aufsummieren(11)

Man kann einzelne Parameter vorbelegen und andere ohne Vorbelegung lassen. Allerdings müssen nach dem ersten vorbelegten Parameter alle weiteren auch vorbelegt sein.


Parameter anhand des Namens übergeben

Wenn man die Namen der Parametervariablen anspricht, braucht man nicht die vorgegebene Reihenfolge zu beachten. Unten stehende Funktionsaufrufe produzieren die gleiche Ausgabe:

def termin(tag, monat, jahr):
   print("Heute ist der "+str(tag)+"."+str(monat)+"."+str(jahr))

termin(2,11,2019)
termin(jahr=2019,monat=11, tag=2)

Ausgabe:
 Heute ist der 2.11.2019
 Heute ist der 2.11.2019



Tupel als Parameter

Vor den Parameter wird ein Sternchen gesetzt. Mit Hilfe dieser Konstruktion kann man eine unbegrenzte Anzahl von Werten eingeben:

def aufsummieren(*twert):
    summe = 0
    for i in twert:
        summe += i
    print(summe)
    return summe

aufsummieren(2,3,10,9)


Dictionarys als Parameter

Es ist möglich, variable Parameter über Namenszuweisungen anzusprechen. Vor den Parameter werden zwei Sternchen gesetzt:

def dictAlsParameter(**woerterbuch):
   for wort in woerterbuch:
      print(wort,woerterbuch[wort])

dictAlsParameter(Name = "Jon",Nachname = "Doe",Wohnort = "Hollywood")


lambda-Funktionen

Anonyme Funktion für den einmaligen Gebrauch. Sie wird in einer Variablen gespeichert.

>>> rechnen = lambda a, b: a + b
>>> rechnen(3,4)
7

format()

name = input("Wie heißt du? ")
alter = int(input("Wie alt bist du? "))
print("Du heißt {} und bist {} Jahre alt.".format(name,alter))

[...] Ausgabe:

Du heißt Jon und bist 44 Jahre alt.

String

Ein String, oder Zeichenkette, kann man als eine Sequenz von einzelnen Zeichen sehen.[1]

Auslesen von Zeichen aus der Kette

Über die Indexnummern der Zeichenkette kann man einzelne Zeichen ausgeben lassen:

>>> meinString = "Zeichenkette"
>>> print(meinString[0])
Z

Man kann die Indexnummern auch rückläufig verwenden, dann ist [-1] das letzte Zeichen der Kette:

>>> meinString = "Zeichenkette"
>>> print(meinString[-2:])
te
>>> print(meinString[:-2])
Zeichenket

Länge des Strings

Die Funktion len gibt die Länge des Strings (Anzahl der Zeichen) zurück:

>>> meinString = "Zeichenkette"
>>> len(meinString)
12
>>> len("aha")
3

upper case und lower case

Strings können in Groß- bzw. Kleinbuchstaben umgewandelt werden:

>>> string1 = "hallo"
>>> string1 = string1.upper()
>>> print(string1)
HALLO
>>> string2 = "GUTEN TAG"
>>> string2 = string2.lower()
>>> print(string2)
guten tag

Teilstrings ersetzen mit replace

>>> meinString = "Mein neues Programm"
>>> meinString = meinString.replace("neues", "schönes")
>>> print (meinString)
Mein schönes Programm

Zahlen

Es gibt Ganzzahlen (int), Fließkommazahlen (float) und komplexe Zahlen (complex).

Funktion abs()

abs() liefert den absoluten Wert einer Zahl.

>>> x = -3.25
>>> y = abs(x)
>>> print(y)
3.25

Funktion pow()

Diese Funktion berechnet die Potenz x hoch y:

>>> x = 3
>>> y = 4
>>> z = pow(x,y)
>>> print(z)
81 

Funktion round()

Diese Funktion rundet Dezimalzahlen auf bzw. ab:

>>> round(5.96734959002,2)
5.97

Die Zahl nach dem Komma bezeichnet die Anzahl der "Nachkommastellen")


Modul math

Für die Verwendung der math-Funktionen (ceil, floor, sqrt etc.) muss zuerst das Modul math importiert werden:

import math

bzw.

from math import *

Listen

Die Liste (list) ist ein sequentieller Datentyp. Was Python eine Liste nennt, würde in den meisten anderen Programmiersprachen als Array bezeichnet werden.[2]

extend()

Mit extend() hängt man eine bestehende Liste an eine andere bestehende Liste an:

# language list
language = ['French', 'English', 'German']

# another list of language
language1 = ['Spanish', 'Portuguese']

language.extend(language1)

# Extended List
print('Language List: ', language)
[3]

Alternativ:

language = language + language1

append()

Mit append() hängt man an eine Liste an ein weiteres Element an:

language = ['French', 'English', 'German']
language.append("Italian")

insert()

insert() fügt mit Hilfe der Indexnummer ein weiteres Element in die Liste ein:

language = ['French', 'English', 'German']
language.insert(1,"Dutch")

Weitere häufig verwendete Listenfunktionen

  • remove(x) entfernt das Element x aus der Liste.
  • clear() leert die ganze Liste.
  • pop() entfernt das letzte Element aus der Liste.
  • index(x) sucht das Element x und gibt seine Indexnummer aus
  • count(x) zählt, wie oft das Element x in der Liste vorkommt.
  • sort() sortiert die Listenelemente.
  • reverse() kehrt die Reihenfolge um.
  • copy() erstellt einen Klon der Liste: list2 = list1.copy()

Listen sortieren

Funktion sort(): liste.sort()


Bubblesort

def bubblesort(x, Index) :
    for i in range(Index) :
        for j in range(Index-i-1) :
          if x[j] > x[j+1] :
            x[j], x[j+1] = exchange(x[j], x[j+1]);

Beispiel:
bubblesort(liste,6)
print(liste)


Tupel

Tupel (tuple') können so wie Listen über Indexnummern abgerufen werden. Allerdings sind Tupel unveränderlich.

>>> koordinaten = (2,3,4)
>>> print (koordinaten[0])
2

Listen von Tupeln:

>>> tupleListe = [koordinaten, (55,89), (23,9)]
>>> tupleListe[0]
(2, 3, 4)
>>> tupleListe[0][1]
3


Dictionarys

tbd.


Verzweigungen (bedingte Antweisungen)

Sonderfall: Bedingung in einer Zeile prüfen:

name = input("Is this a test? ")
x = "YES" if name == "Test" else "NO"
print(x)

pyperclip

Installation:

apt-get install python-pyperclip

Das Modul pyperclip lässt sich aber erst laden nach

sudo pip3 install pyperclip


pyinstaller

Installation:

apt install python-pip
pip install pyinstaller

pyinstaller -F erzeugt ein Stand Alone Executable. Dieses liegt dann im Verzeichnis dist.


Typographie

Sonderzeichen Herz = u'\u2764'


Formatierung

Formatierung von float-Zahlen ("Gleitkommazahlen") auf 2 Nachkommastellen: '%.2f' %

kapital = 22092.442508224092
print('%.2f' % kapital)
>>> 22092.44

[4]


Troubleshooting

Deutsche Sonderzeichen lassen sich in IDLE nicht abspeichern

Entweder an den Anfang des Skripts folgende Zeile setzen:

# -*- coding: utf-8 -*-

bzw.

# -*- coding: cp1252 -*-

[5]

oder in IDLE (Shell-Menü) folgende Einstellung vornehmen: Options > Configure IDLE > General > Default Source Encoding > UTF-8


Code liegt in Python 2 vor

>> Umwandlung mit dem Skript 2to3.py. Das Skript liegt im Verzeichnis von Python 2.

Man kann sich 2to3.py natürlich auch in das lokale Verzeichnis legen. Umwandlung mit

python -w 2to3.py py2Datei.py 

Links und Quellen



Youtube


Bücher

Willemer, Arnold: Python. Der Sprachkurs für Einsteiger und Individualisten, Weinheim 2015


| |