Seite 1 von 1
Datentypkonvertierung
Verfasst: Donnerstag 29. September 2011, 09:44
von mcdaniels
Ich bin wieder mal am klein anfangen

Nun würde mich interessieren ob die Konvertierung des Datentypes von int zu zb str immer notwendig ist, wenn man zum Beispiel eine Berechnung macht (braucht zb int) und das Ergebnis dann im Zuge der Print-Funktion ausgibt.
Zur Veranschaulichung mein "tolles" Programm:
Code: Alles auswählen
print ('Hallo, ich sage dir, wie viele Zeichen du eingegeben hast!')
text = raw_input("Text: ")
zeichen = len(text)
zeichen = str(zeichen) ##Umwandlung in str, damit mit Verbindung mit str möglich
print ('Du hast ' + zeichen + ' Zeichen (mit Leerzeichen) eingegeben.')
leerzeichen = text.count(' ')
leerzeichen = str(leerzeichen)
print ('Im Text wurde(n) ' + leerzeichen + ' Leerzeichen verwendet.')
zeichen = int(zeichen)
leerzeichen = int(leerzeichen)
zeichen_ohne_leerzeichen = zeichen - leerzeichen
zeichen_ohne_leerzeichen = str(zeichen_ohne_leerzeichen)
print ('Somit waren das ohne Leerzeichen ' + zeichen_ohne_leerzeichen + ' Zeichen')
Ich wandle also, je nachdem was ich grade brauche, die Datentypen immerwieder von int nach str und umgekehrt.
Ist das i.O. so, oder eher schlechter Stil?
Re: Datentypkonvertierung
Verfasst: Donnerstag 29. September 2011, 09:54
von snafu
Das ist eher schlechter Stil. Besser wäre sowas:
Code: Alles auswählen
>>> eingabe = raw_input('Text: ')
Text: blablupp
>>> print 'Du hast {0} Zeichen eingegeben.'.format(len(eingabe))
Du hast 8 Zeichen eingegeben.
Das Stichwort heißt "String Formatting". Ja, danach kann man auch suchen... ;P
Zudem scheinst du Python 2.x zu benutzen. Dort ist `print` keine Funktion und sollte daher auch ohne Klammern geschrieben werden.

Re: Datentypkonvertierung
Verfasst: Donnerstag 29. September 2011, 10:03
von mcdaniels
Stimmt, ich mische schon wieder! Wollte nun eigentlich doch Python 3.x verwenden. Da gibts dann aber eigentlich wieder kein raw_input.
Re: Datentypkonvertierung
Verfasst: Donnerstag 29. September 2011, 10:03
von deets
Dafuer ist input dann so wie raw_input.
Re: Datentypkonvertierung
Verfasst: Donnerstag 29. September 2011, 10:11
von mcdaniels
Hm, nicht einfach. Ich hab eventuell vor, das ganze dann -so ich es mal verstanden hab- auch in Richtung Web zu verwenden. Da heißts ja eigentlich, dass 2.7 die bessere Wahl ist. Allerdings ists für mich als Anfänger wohl eher vermessen, jetzt schon in diese Richtung zu denken.
Andererseits will ich nicht 2.7 lernen und dann feststellen, dass es doch besser gewesen wäre, auf 3.x zu setzen.
Da 2.7 allerdings erst vor kurzem ein Update erfahren hat, wirds das wohl auch noch länger geben

Re: Datentypkonvertierung
Verfasst: Donnerstag 29. September 2011, 10:29
von snafu
Python 2.7 wird es sogar noch mehrere Jahre geben. Die Situation mit Python 3.x ist nach wie vor etwas verzwickt: Den Zweig an sich empfinde ich durchaus als Bereicherung. Insbesondere auch im Hinblick auf die "Encoding-Hell" (Probleme/Fallstricke in Python 2.x bei Verwenung von Umlauten, usw.). Leider sind aber einige externe Bibliotheken bisher noch nicht auf Python 3.x portiert. Ich würde an deiner Stelle einfach überlegen, welche Lib du verwenden willst und dann abchecken, ob sie unter Python 3 läuft.
Falls du Linux verwendest, dann willst vielleicht lieber das "Standard-Python" (also diejenige Version, die durch den Befehl `python` aufgerufen wird) verwenden. Das ist bei den meisten aktuellen Distris derzeit Python 2.7.
Re: Datentypkonvertierung
Verfasst: Donnerstag 29. September 2011, 11:03
von mcdaniels
Ok, dann werd ich mich nun definitiv Python 2.7.2 zuwenden, das übrigens gerade unter Win7 abgestürzt ist und sich trotz de- und reinstallation nicht mehr starten lässt (IDLE mein ich). Ein Klick auf IDLE geht quasi ins Leere es tut sich nix...
Komisch!
Ich weiß ja, warum ich Windows nicht mag ^^
Update: Läuft wieder ... nicht mehr
Interessant:
führt dazu, dass python 2.7 unter Win7 abstürzt und sich die GUI nicht mehr starten lässt...
Re: Datentypkonvertierung
Verfasst: Donnerstag 29. September 2011, 11:16
von snafu
Sorry, aber das ist das übliche OS-Bashing-Blabla. Ein Mac OS X oder ein Linux können in vielen Situationen genau so rumzicken. Einfach mal den Fehler genauer analysieren und dann bei Bedarf am Besten einen Thread im Installieren/Konfigurieren-Forum dazu aufmachen.
//edit: Hat sich wohl eh schon erledigt. Fein.

Re: Datentypkonvertierung
Verfasst: Donnerstag 29. September 2011, 11:19
von snafu
mcdaniels hat geschrieben:Interessant:
führt dazu, dass python 2.7 unter Win7 abstürzt und sich die GUI nicht mehr starten lässt...
Vielleicht ein Bug in IDLE? Teste es mal zum Vergleich in der Kommandozeile von Windows.
Re: Datentypkonvertierung
Verfasst: Donnerstag 29. September 2011, 11:26
von mcdaniels
Ausserhalb der GUI also in der Eingabeaufforderung erhält man:
Code: Alles auswählen
AttributeError: 'module' object has no attribute 'randint'
Komisch, dass sich die Gui jetzt wieder nicht mehr starten lässt.
Update: Soeben unter Debian Squeeze (allerdings Python 2.6) versucht... läuft. (kein Bashing nur ne Info

)
Hab jetzt im Forum Installieren/Konfigurieren einen neuen Thread eröffnet.
LG
Re: Datentypkonvertierung
Verfasst: Donnerstag 29. September 2011, 12:12
von BlackJack
@mcdaniels: Du hast höchstwahrscheinlich selbst ein `random`-Modul geschrieben, so dass dieses anstelle des Moduls aus der Standardbibliothek geladen wird.
Re: Datentypkonvertierung
Verfasst: Donnerstag 29. September 2011, 15:25
von mcdaniels
...ja so ist es!

ich ....!