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
1 2