Seite 1 von 1

Explizite Datentypumwandlung

Verfasst: Sonntag 10. August 2008, 07:52
von Meridian
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 ?

Re: Explizite Datentypumwandlung

Verfasst: Sonntag 10. August 2008, 08:08
von Pekh
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.

Verfasst: Sonntag 10. August 2008, 08:41
von sma
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

Verfasst: Sonntag 10. August 2008, 08:53
von Meridian
@sma:
Genau das hab ich gemeint , danke .