adressbuch

Gute Links und Tutorials könnt ihr hier posten.
Antworten
Obelix09
User
Beiträge: 4
Registriert: Samstag 13. Juni 2009, 17:50

Hallo ihr lieben.
Ich schreibe grade ein kleines Adressbuch in Python und bin dabei auf ein großes Problem gestoßen. Ich bekomme es nicht hin Variablen umzuschreiben ,wehrend das Programm grade läuft. ): In den fall ist es die Variable eingabe die mir Probleme macht.

Code: Alles auswählen

#ADRESSBUCH 0.01A#
#AUTOR: OBELIX09##
#DATUM: 13.06.09#[/color]

name    = ("christian")
eingabe = ("")

print ("wilkommen bei obelix09 adressbuch.")
print ("bitte gib die gesuchte person ein")
[color=red]#raw_input (eingabe) dort ist der fehler glaube ich#[/color]

if eingabe == name:
 import christian
elif eingabe == ("idiot"):
    print ("arxxxxxx")
else:
    print  ("Person konnte nicht im Adressbuch gefunden werden.")
[/code]
Zuletzt geändert von Obelix09 am Sonntag 14. Juni 2009, 12:37, insgesamt 2-mal geändert.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

In Python schreibst du jedenfalls nicht (und auch nicht im richtigen Unterforum).

Die Klammern brauchst du nur bei Tupeln und Funktionsaufrufen, nicht bei allem anderen, schon gar nicht bei Vergleichen und Zuweisungen

Ich hoffe du arbeitest in Python 3, denn sonst solltest du auch dort die Klammern weglassen - aber das ``raw_input`` verheisst etwas anderes.

Dein Code kann so auch gar nicht funktionieren, denn (raw_)input gibt die Eingabe zurück und nimmt ein Prompt als Argument, dh du brauchst ``eingabe = raw_input("Name der Person?")``

Übrigens: Code kann man hier in Codetags schreiben und so die Einrückungen retten: [code=py][/code]

P.S. Für dein Adressbuch solltest du dir Klassen und Dictionaries anschaun.
Benutzeravatar
jonas
User
Beiträge: 156
Registriert: Dienstag 9. September 2008, 21:03

Code: Alles auswählen


def check_input (correct, userinput):
    if userinput == correct:
         return True
    else:
         return False

if __name__ == "__main__":

    name = 'Christian'
    print '~Wilkommen im obelix09 Adressbuch~'
    eingabe = raw_input('Bitte geben sie die gesuchte Person ein: ')
    if check_input(name, eingabe) == True:
        print 'Im Adressbuch gefunden.'
    else:
        print 'Nicht im Adressbuch gefunden.'

Auch sehr zu empfehlen Python-Tutorial und
PEP 8 Styleguide, such einfach bei google.
Lg, Jonas
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Das geht auch so:

Code: Alles auswählen

def check_input (correct, userinput):
    return userinput == correct
Das gleiche gilt für Zeile 14.
Zuletzt geändert von derdon am Samstag 13. Juni 2009, 19:40, insgesamt 1-mal geändert.
Benutzeravatar
jonas
User
Beiträge: 156
Registriert: Dienstag 9. September 2008, 21:03

Okäse, danke :D

EDIT:
So dürfts auch gehen...

Code: Alles auswählen

def check_input (correct, userinput):
    return (True if correct == userinput else False)
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Und wo ist der Vorteil des ganzen? Ich sehe da nur den Funktionsoverhead :roll:

Im Übrigen kommt auch hier die richtige Datenstruktur (Dictionary) zur Hilfe:

Code: Alles auswählen

addresses = {}
entry = raw_input("Name?")
if entry not in addressess:
    print "Hamm wa nit"
else:
    print addresses[entry]
Oder auch:

Code: Alles auswählen

addresses = {}
entry = raw_input("Name?")
try:
    print addresses[entry]
except KeyError:
    print "Hamm wa nit"
Edit: Der Ansatz mit den gültigen Eingaben, zumindest in der Implementation, führt zu sich wiederholendem Spaghettei-Code. Und nein "Mies" * "Mies" ergibt nicht gut, sondern "Extrem Mies".
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Code: Alles auswählen

addresses = {}
entry = raw_input("Name?")
print addresses.get(entry, 'Hamm wa nit')
Obelix09
User
Beiträge: 4
Registriert: Samstag 13. Juni 2009, 17:50

Ok danke Leute :D
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

derdon hat geschrieben:Das geht auch so:

Code: Alles auswählen

def check_input (correct, userinput):
    return userinput == correct
Das gleiche gilt für Zeile 14.
Wenn man schon für Gleichheit eine Funktion definiert, dann kann man auch gleich den Operator nutzen:

Code: Alles auswählen

from operator import eq
check_input = eq
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten