Hi auch,

ich muss dich leider enttäuschen das Programm funktioniert leider nicht. Der
Grund hierfür ist ein bisschen tückisch. Eines muss man sich in Python
merken, in Python sind alles Objekte (Ich hoffe die meisten wissen was ein
Objekt ist ;)) und die variablen sind nur Namen unter denen man diese
Objekte findet. In diesem Fall sind die Namen für ein und das selbe Objekt:
Buchstabenliste und etsilnebatshcuB. Das heißt jede Aktion die auf den einen
Namen durchführe in diesem Fall das Reverse hat auch Auswirkungen auf den
anderen Namen da beide auf das selbe Objekt zeigen!
Um dieses Programm jetzt trotzdem richtig zum Arbeiten zu bekommen muss man
eine Kopie der Liste erstellen. Dies kann man über das copy Modul machen.
Eine Lösung für dieses Programm ist also:

==============================================

import copy

Wort = raw_input("Bitte Text eingeben:")

Buchstabenliste = list(Wort)

etsilnebatshcuB = copy.copy(Buchstabenliste)
etsilnebatshcuB.reverse()


if Buchstabenliste == etsilnebatshcuB:
    print("%s ist ein Palindrom") % Wort
else:
    print("%s ist kein Palindrom") % Wort

==============================================

Um sich das ganze nochmal Bildlich darzustellen kann man die buildin Methode
id() verwenden. 
Beispiel:

==============================================

Wort = raw_input("Bitte Text eingeben:")

Buchstabenliste = list(Wort)

etsilnebatshcuB = Buchstabenliste
print id(etsilnebatshcuB) + "==" + id(Buchstabenliste)

etsilnebatshcuB = copy.copy(Buchstabenliste)
print id(etsilnebatshcuB) + "!=" + id(Buchstabenliste)

==============================================

Dieses Beispiel gibt aus das die internen IDs unter denen Python die Objekte
verwaltet im ersten Fall gleich sind es sich also um das selbe Objekt
handelt und im anderen Fall diese IDs ungleich sind und es sich hierbei um
zwei unabhängige Objekte handelt.

Warum ich eine main Funktion definiert habe, ist einfach damit ich mich an
PEP8 halte bzw. ist dies guter Stil. Denn Funktionalität die man eine
Funktion kapselt kann widerverwendet werden. Ob man sich an PEP8 hält kann
man ja einfach durch pylint erfahren.

Gruß
Malte


-----Ursprüngliche Nachricht-----
Von: trolug-boun...@trolug.de [mailto:trolug-boun...@trolug.de] Im Auftrag
von Jonas Stein
Gesendet: Mittwoch, 11. März 2009 17:30
An: trolug@trolug.de
Betreff: [Trolug] Palindrome nochmal kurz

Hallo

hier sende ich nochmal eine kurze Version von dem Palindromprogramm ohne
Kommentare. 

Man sieht, wie kurz es ist. 

==============================================

Wort = raw_input("Bitte Text eingeben:")

Buchstabenliste = list(Wort)

etsilnebatshcuB = Buchstabenliste
etsilnebatshcuB.reverse()


if Buchstabenliste == etsilnebatshcuB:
    print("%s ist ein Palindrom") % Wort
else:
    print("%s ist kein Palindrom") % Wort

==============================================



Noch ein paar Gedanken von mir zum Vortrag: 

* Das Liveimage hatte sich bewaehrt. Vielleicht koennen wir es fuers
  naechste mal noch etwas anpassen. Der Fokuswechsel von den Fenstern hat 
  scheinbar viele irritiert.

* Waere es auch noch moeglich einen PDF-Viewer und vim und emacs dabei zu
  packen? Ich denke wir werden das noch ein paar mal nutzen...

* Genuegt es eine Version online zu stellen, mit der wir alle  Rechner
booten
  koennen? Ich glaube von CD konnten (ausser Frank) alle starten, oder?

* Ich glaube im Nachhinein, die Kommentarzeilen haben eher den Ueberblick
  genommen. Vielleicht sollte man die ersten Programme ohne
  Kommentarzeilen zeigen. Nachher ist man schlauer...

* Die naechsten Vortraege sollten etwas mehr zu Grundlagen sein.


Ich habe noch eine Frage an Malte, und zwar ist es falsch, die main():
Zeile wegzu lassen, oder ist es nur dringend empfohlen? Und warum macht
man es, wenn das Programm auch ohne laeuft?

Herzliche Gruesse,

-- 
Jonas Stein <n...@jonasstein.de>

_______________________________________________
Trolug_trolug.de mailing list
trolug@trolug.de
https://ml01.ispgateway.de/mailman/listinfo/trolug_trolug.de

_______________________________________________
Trolug_trolug.de mailing list
trolug@trolug.de
https://ml01.ispgateway.de/mailman/listinfo/trolug_trolug.de

Reply via email to