zahl und string

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
Benutzeravatar
pengo
User
Beiträge: 15
Registriert: Dienstag 10. Oktober 2006, 22:28

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
Schildi
User
Beiträge: 30
Registriert: Freitag 19. Mai 2006, 22:23
Kontaktdaten:

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
by: Schildi
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
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

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
http://www.cs.unm.edu/~dlchao/flake/doom/
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

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
Benutzeravatar
pengo
User
Beiträge: 15
Registriert: Dienstag 10. Oktober 2006, 22:28

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
Benutzeravatar
DatenMetzgerX
User
Beiträge: 398
Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)

mssql oder mysql?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Bitte stelle die Frage im Datenbank-Forum, dort ist sie besser aufgehoben. Dankeschön.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten