Abstecher objektorientiertes programmieren in Python

Inspiriert durch das Kapitel objektorientiertes Programmieren in Python, habe ich es gewagt, einen Abstecher in diese Richtung zu machen.

Vorweg: Es ist nicht ganz einfach. 🙂 Für mich -als nicht programmierer- ist einiges nicht „einfach mal so“ nachvollziehbar.

Grundlagen

In der oo-P (objektorientierten Programmierung) gibt es Klassen und Methoden und Attribute. Das ist zumindest das, was ich bislang „gelernt“ habe.

Nehmen wir folgendes Beispiel:

class artikel: # Es wird die Klasse artikel definiert
    def __init__(self):
        self.lagerstand = 0 # Diese Klasse bekommt das Attribut lagerstand = 0

    def erfassen (self, menge): # Es wird die Methode "erfassen" definiert
        self.lagerstand = self.lagerstand + menge

    def verkaufen(self, menge): # Es wird die Methode "verkaufen" definiert
        self.lagerstand = self.lagerstand - menge
        print 'Lagerstand: ', self.lagerstand

notebook = artikel() # Erzeugt eine sog. Instanz der Klasse artikel
desktop = artikel () # Erzeugt eine weitere sog. Instanz der Klasse artikel

Somit haben wir nun also die Klasse artikel. In der Klasse artikel, sind die Methoden erfassen und verkaufen definiert. wobei diese Methoden genau eine Variable entgegen nehmen, nämlich die menge der verkauften bzw. der eingekauften Artikel.

Starten wir nun das Programm und geben in der Python Shell folgendes ein:

notebook.erfassen(5)

nimmt die Instanz notebook der Klasse Artikel als den Wert 5 als Variable menge entgegen und rechnet dann lt. Programm self.lagerstand = self.lagerstand + menge aus.

Da Lagerstand = 0 haben wir dann also den lagerstand 5.

Die Eingabe von

notebook.lagerstand

in der Python-Shell ruft die Variable lagerstand der Klasseninstanz notebook auf. Diese sollte jetzt auf 5 stehen.

desktop.lagerstand ist noch bei null, da wir ja mit der Instanz notebook gearbeitet haben.

Soweit, so gut… jetzt heißt es üben üben üben und vor allem verstehen 🙂

 

 

 

Python Grundkurs: Teil 2: Schleifen

Nein, kein Mittel zur Verzierung :-). Schleifen kommen immer dann zum Einsatz, wenn etwas x mal wiederholt werden soll, oder so lange wiederholt werden soll, bis ein gewisser Zustand erreicht worden, oder durch den User ausgelöst worden ist.

Unterschieden wird hier zwischen while und for. While kommt dann zum Zug, wenn man nicht weiß, wie oft die Schleife durchlaufen wird. (So lange bis der Anwender das Programm stoppt).

For hingegen ist in der Laufzeit (Schleifendurchläufe) limitiert. (Man weiß, dass die Schleife 5x durchlaufen soll):

 

Beispiele – for – Schleife

for i in range(1,11):
   x = raw_input('Wert eingeben: ')

Beispiel whileSchleife

x = "1"
while x != "":
   x = raw_input ('Eingabe :')

An obigem Beispiel sieht man nun den Unterschied. In der while Schleife hängt es vom Benutzer ab, wann er als Wert nichts eingibt (also nur Return drückt) und somit die while Bedingung nicht mehr erfüllt wird. Sie besagt, dass die Schleife so lange durchlaufen wird, so lange der Wert der Variablen x nicht „“ (also leer) ist.

Wir wissen also bei while nicht, wann der Anwender nichts mehr eingeben will!

Python Grundkurs: Teil 1.2: Grundlegende Operatoren

Variablen haben wir bereits kennen gelernt. Nun geht es darum, auch kurz einen Blick auf die grundlegenden Operatoren zu werfen. Hierbei gibt es vor allem bei = und == einen großen Unterschied!

Während folgender Code bedeutet, dass die Variable x den Wert 10 zugewiesen bekommt:

x = 10

bedeutet folgendes, dass x mit dem Wert 10 verglichen wird (sozusagen: Entspricht x dem Wert 10?)

x == 10

Gut einprägen!

Weitere Operatoren

  • + –
  • * /
  • < > >= <=
  • % (Modulooperator – zeigt den Rest einer Division)
  • or, and, not, in

Genauer betrachten möchte ich hier kurz den Modulooperator. Dieser gibt – wie bereits kurz angeschnitten, den Rest einer Division aus.

Das probieren wir gleich mal aus und tippen direkt in der Pythonshell folgendes ein:

10%3

Als Ausgabe erhalten wir 1. Warum? Weil 3 in 10 3x enthalten ist (3×3 = 9) Rest = 1. Modulo (also %) gibt immer den Rest einer Division aus.

 

 

Python Grundkurs: Teil 1.1: Datentypen

Nun kurz zu den Datentypen, die eine sehr wichtige Rolle spielen!

Der Befehl raw_input nimmt Einnahmen entgegen und speichert diese standardmäßig als String (also Zeichenkette) ab. Dies lässt sich leicht durch den Befehl type(variablenname) überprüfen.

name = raw_input('Bitte Ihren Namen eingeben:')
datentyp = type(name)
print datentyp

Diese 3 Zeilen muss man nun allerdings in den Editor eingeben und abspeichern, bevor man das Programm starten kann.

Was passiert?

  1. Man gibt seinen Namen ein. Dieser wird der Variable name zugewiesen.
  2. der Variable datentyp wird der Wert der Ausgabe des Befehles type zugewiesen. In Worten: „Sag mir welcher Datentyp die Variable name ist“.
  3. der print-Befehl gibt diesen Wert schließlich als <type ’str‘> aus. Wir haben hier also eine Zeichenkette eingegeben.

 Einige weitere Datentypen

  • int (Integer – Ganze Zahlen)
  • float (Kommazahl)
  • long (lange Integerzahlen)
  • complex (komplexe Zahlen)

Was, wenn man mit den Werten rechnen will – Mit Strings kann man das doch nicht!

Richtig! Mit Zeichenketten kann man keine Berechnungen durchführen. Deshalb hängt folgendes Programm die 2 Werte zusammen, anstatt diese zu addieren:

wert1 = raw_input('Wert1: ')
wert2 = raw_input('Wert2: ')
print wert1+wert2

Wenn man mit den beiden Werten rechnen will, muss das so aussehen:

wert1 = int(raw_input('Wert1: '))
wert2 = int(raw_input('Wert2: '))
print wert1+wert2

Warum?

Berechnungen können nur mit Zahlen (Datentyp = Zahl) durchgeführt werden. Durch die Verwendung von int() „weiß“ Python, dass die Eingabe als Integer zu verstehen ist. Strings können nicht zu Berechnungszwecken herangezogen werden. Integerzahlen schon!

Statt int() könnten wir hier auch float() verwenden. Die Inputanweisung würde dann so aussehen:

wert1 = float(raw_input('Wert1: '))

Wir könnten hier dann zum Beispiel: 1.2 eingeben – also eine Kommazah

Übungsaufgabe 1

Schreibe ein Programm, dass 1. Deinen Namen abfragt, danach  2 Werte abfragt – diese addiert und zuletzt folgendes ausgibt:

Hallo Name, die Berechung ergibt Ergebnis. (Wobei Name eine Variable ist und das Ergebnis natürlich der Berechnung entspricht).

Tipp: Die Verkettung von Strings und Zahlen erfolgt mit Hilfe des print Befehles in dieser Art und Weise (, statt +):

print 'Hallo ', name, 'die Berechnung ergibt ', ergebnis

Lösung

name = raw_input('Bitte deinen Namen eingeben: ')
wert1 = int(raw_input('Wert1: '))
wert2 = int(raw_input('Wert2: '))
ergebnis = wert1 + wert2 print 'Hallo ',name,' die Berechnung ergibt ',ergebnis

Python Grundkurs: Teil 1: Einfache Ein- und Ausgabe

Ausgabe von Text (Befehl print)

Um Texte (aber auch Variablen) ausgeben zu können, bedient man sich des Befehls print. Da wir uns in Python 2.7.2 befinden, ist dieser Befehl keine Funktion (wie z.B. in Python 3.x). Um einen Text auszugeben, schreiben wir folgenden Befehl in Idle:

print 'Hallo, hier spricht Python'

danach starten wir „das Programm“ und sehen, dass – wie erwartet – Hallo, hier spricht Python ausgegeben wird.

Zusatzinfo:

  • Diese Übungen (auch die folgenden!) kann man auch direkt in der Pythonshell eingeben, ohne zuvor die Datei zu erstellen und zu speichern
  • Variablen = Platzhalter, die Werte speichern können
  • Statt dem einfachen ‚ kann auch “ verwendet werden

Eingabe durch den Anwender (Befehl raw_input)

Um nun einen Wert (Text oder Zahl) eingeben zu können, müssen wir zuerst einen Platzhalter schaffen. Dieser wird als Variable bezeichnet. Eine entsprechende Zuordnung wird wie folgt erstellt:

name = raw_input('Bitte geben Sie Ihren Namen ein:')

Was passiert hier? der Variable name wird eine Eingabe zugewiesen, die vom Anwender kommt. Gibt man z.B.: Daniel ein, bekommt die Variable name den Wert Daniel.

Nun prüfen wir, ob die Variable auch einen Wert gespeichert hat:

print name

Hierbei sollte nun der Wert ausgegeben werden, der eingegeben wurde.

„Zusammenhängen“ von Ausgaben

Will man einen String und den Wert einer Variable mit einem print – Befehl ausgeben ist auch das möglich:

print 'Hallo, ' + name + ' wie geht es dir?'

Die Verkettung erfolgt also mit dem +.