Explizite Datentypumwandlung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Meridian
User
Beiträge: 2
Registriert: Sonntag 10. August 2008, 06:47
Wohnort: Lampertheim

Sonntag 10. August 2008, 07:52

Hallo,
ich komme eigentlich aus der Java-Ecke und arbeite mich derzeit in Python ein. Lustigerweise bereitet mir die dynamische Typisierung noch ein wenig Probleme, da ich in Java eigentlich immer die Datentypen beachten musste.

Ok zu meinem Problem:
Ich habe einen String, den ich mit einer for-schleife durchlaufe und die einzelnen Zeichen in ihrer ASCII Zahlendarstellung ausgeben möchte.

Code: Alles auswählen

 
def change(zeichenkette):
      for i in zeichenkette:
           print (int) i; #funktioniert nicht
           
In Java hätte ich dies mit charAt(i) e.t.c gelöst. Wie lässt sich das mit Python bewerkstelligen ?
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

Sonntag 10. August 2008, 08:08

Meridian hat geschrieben:

Code: Alles auswählen

 
def change(zeichenkette):
      for i in zeichenkette:
           print (int) i; #funktioniert nicht
           
In Java hätte ich dies mit charAt(i) e.t.c gelöst. Wie lässt sich das mit Python bewerkstelligen ?
Wenn du mit 'for i in zeichenkette' durch einen String läufst, enthält i bereits das gewünschte Zeichen. Wenn du nur den Index brauchst, mußt du die Schleife zu

Code: Alles auswählen

for i in xrange(len(zeichenkette))
ändern.
Oder, wenn du beides brauchst, bietet sich folgendes Konstrukt an:

Code: Alles auswählen

for i in enumerate(zeichenkette)
i enthält dann jeweils ein Tupel (Index, Zeichen).

Die Bennennung der Laufvariablen müßte dann aber überdacht werden. Wenn 'i' keine Zahl enthält, führt das in der Regel zu Verwirrung.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Sonntag 10. August 2008, 08:41

Das angedeutete `(int) ch` würde den Codepoint eines Zeichens ausgeben, also z.B. 65 für ein "A". Wenn du das erreichen wolltest, brauchst du `ord()` in Python.

Code: Alles auswählen

map(ord, "Hallo, Welt")
Stefan
Meridian
User
Beiträge: 2
Registriert: Sonntag 10. August 2008, 06:47
Wohnort: Lampertheim

Sonntag 10. August 2008, 08:53

@sma:
Genau das hab ich gemeint , danke .
Antworten