Seite 1 von 1

zahl und string

Verfasst: Dienstag 10. Oktober 2006, 22:33
von pengo
Abend,

ich bin neu in Python eingestiegen und habe so gleich ma nen kleines Problem (wenn man es überhaupt Problem nehnnen kann :)).

Ich habe mal versuch ein kleine Porgramm zu schreiben das
ein Eingabe entgegen nimmt und diese addiert bis ein q eingegeben wird.

Code: Alles auswählen

#!/usr/bin/python

rechnungsbetrag = 0

while True:
  rechnungsbetrag_input = raw_input('Betrag: ')
  if rechnungsbetrag == 'q':
    break
  else:
    print rechnungsbetrag
    rechnungsbetrag += int(rechnungsbetrag_input)

print 'Rechnungsbetrag: ', rechnungsbetrag

-----------------------

erste Frage: wie kann ich sagen: "wenn Eingabe kein Zahl mach irgend etwas"

zweite Frage: ich habe das Progamm ausprobiert und warum gibt er mir die Fehlermeldung aus? Und wie kann ich das ganz umgehen oder richtig Programmiren.
  • # python test.py
    Betrag: 2
    0
    Betrag: 3
    2
    Betrag: 4
    5
    Betrag: 2
    9
    Betrag: q
    11
    Traceback (most recent call last):
    File "kasse.py", line 20, in ?
    rechnungsbetrag = rechnungsbetrag + int(rechnungsbetrag_input)
    ValueError: invalid literal for int(): q
    #
gruß pengo

Verfasst: Dienstag 10. Oktober 2006, 22:51
von Schildi
also zu dem 2.:

es ist eigentlich ganz einfach, denn da "q" keine zahl ist, kannst du das auch nicht in eine zahl, bzw mit "int()" umwandeln

Code: Alles auswählen

rechnungsbetrag += int(rechnungsbetrag_input)
ist somit falsch, oder bessser gesagt funktioniert nicht

um das programm abzubrechen, müsstest du dann nur

Code: Alles auswählen

if rechnungsbetrag_input == 'q': 
    break 
statt

Code: Alles auswählen

if rechnungsbetrag == 'q': 
    break 
schreiben, dann dürfte es funktionieren wie du's haben willst.

zu der 1. wüsst ich jetz auch so nix... :(

mfg schildi

Verfasst: Dienstag 10. Oktober 2006, 23:17
von BlackJack
Wenn man `int()` etwas übergibt, was nicht in eine Zahl umgewandelt werden kann, dann gibt es die Ausnahme, die Du ja schon bei dem 'q' bemerkt hast.  Diese Ausnahme kann man mit ``try``/``except`` behandeln:

Code: Alles auswählen

rechnungsbetrag = 0

while True:
    rechnungsbetrag_input = raw_input('Betrag: ')
    if rechnungsbetrag_input == 'q':
        break
    else:
        print rechnungsbetrag
        try:
            rechnungsbetrag += int(rechnungsbetrag_input)
        except ValueError:
            print 'Eingabe keine gültige Zahl!'

print 'Rechnungsbetrag: ', rechnungsbetrag

Verfasst: Mittwoch 11. Oktober 2006, 19:09
von murph
und wenn man nichts eingibt, hat der string die länge null (0):
das macht:

Code: Alles auswählen

if len(rechnungsbetrag_input) == 0:
    break

Verfasst: Mittwoch 11. Oktober 2006, 19:34
von Y0Gi
murph hat geschrieben:und wenn man nichts eingibt, hat der string die länge null (0):
das macht:

Code: Alles auswählen

if len(rechnungsbetrag_input) == 0:
    break
Das geht auch kürzer:

Code: Alles auswählen

if not len(rechnungsbetrag_input):
    break
Und noch kürzer:

Code: Alles auswählen

if not rechnungsbetrag_input:
    break

Vielen Dank

Verfasst: Samstag 14. Oktober 2006, 07:43
von pengo
vielen dank leute, jetzt gehts!

jetzt habe ich noch ne klene frage hatte jemand nen gutes Tutorial für python und datenbanken speziell msql in deutsch wär prima geht aber auch englisch

ich weis ich weis google.de aber da muss man dann wieder aus selektieren was gut ist was schlecht ist deshalb frag ich immer lieber nach da ma ja oft schon erfahrunge gesammelt hat und man soll ja auch nicht das rad immer neu finden ;) :P

gruß pengo

Verfasst: Samstag 14. Oktober 2006, 10:24
von DatenMetzgerX
mssql oder mysql?

Verfasst: Samstag 14. Oktober 2006, 11:54
von Leonidas
Bitte stelle die Frage im Datenbank-Forum, dort ist sie besser aufgehoben. Dankeschön.